2011-09-09 8 views
0

저는 크로스 플랫폼 UDP 서버 클라이언트를 개발하는 초기 단계에 있습니다. 내 경우에는 클라이언트가 모바일 핫스팟 옵션을 통해 연결된 Android 휴대 전화로 브로드 캐스트를 보냅니다.Android 3G UDP 브로드 캐스트

현재 동일한 장치에 서버와 클라이언트를 설치하여 테스트 중입니다. 그러나 나는 박스형 원격 응용 프로그램 덕분에 브로드 캐스트 주소를 얻는 방법 만 알고 있습니다.

누구나 아래 코드와 동일한 작업을 수행하고 있지만 모바일 네트워크 브로드 캐스트 주소를 얻는 방법을 알고 있습니까?

그래서, 여기에 코드입니다 : 독수리 눈의 독자

InetAddress getBroadcastAdd(Context context) throws IOException { 
    WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
    DhcpInfo dhcp = wifi.getDhcpInfo(); 

    int broadcast = (dhcp.ipAddress & dhcp.netmask) | ~dhcp.netmask; 
    byte[] quads = new byte[4]; 
    for (int k = 0; k < 4; k++) 
     quads[k] = (byte) ((broadcast >> k * 8) & 0xFF); 
    return InetAddress.getByAddress(quads); 
} 

하면 앱이 브로드 캐스트 주소를 얻을 것이다 다른 장치로 작동하려면 실제로이 코드를 필요가 없습니다 수집 한 것입니다 Wi-Fi에서이 장치에 대한 테스트를 먼저 수행해야합니다.

미리 감사드립니다.

답변

0

대부분의 네트워크 (Wi-Fi 및 3G)는 NAT을 사용합니다. NAT는 아웃 바운드 연결을 허용하지만 인바운드 (인터넷에서 장치로) 연결을 차단합니다.

서버와 장치가 모두 동일한 로컬 네트워크 (wifi)에 있으면 NAT 게이트웨이를 통과하지 않는 것처럼 작동합니다.

이유 : 인터넷에서 기기로 연결하려는 시도는 대부분의 네트워크에서 작동하지 않습니다.

업데이트

당신의 장치가 모두 같은 로컬 네트워크에있는 경우 다음 광고/발견 서비스의 표준화 된 방법으로 사용할 수 있습니다 봉쥬르 일명 Zeroconf를합니다. http://jmdns.sourceforge.net/

을 또한 http://home.heeere.com/tech-androidjmdns.html

+0

내가 인터넷에 접속하지 않아도, 나는 다른 장치 파일을 요청, 그것은 연결로, 안드로이드 장치가 서버 역할을 할 참조 : 자바 안드로이드에서 작동하도록보고 구현이있다 –

+0

내가 말했듯이 - 당신은 할 수 없습니다. NAT는 인터넷 대 장치 연결을 시작하지 못하게합니다. –

+0

두 기기가 동일한 로컬 (Wi-Fi) 네트워크에있는 경우에만 작동합니다. –

관련 문제