2014-12-01 4 views
0

핫스팟으로 작동하는 동안 Android에서 브로드 캐스트 또는 멀티 캐스트 서버를 설정하려고합니다. 방송 (네트워크에 도달 할 수없는 오류를 수신)에 대한 초기 문제가 발생한 후에 나는 이것이 안드로이드에서는 정상적인 것으로 보았 기 때문에 어쨌든 우리가 선호하는 것으로 생각했기 때문에 멀티 캐스트를 통해이를 구현하기로 결정했습니다. 내가 그렇게했을 때, 나는 다음과 같은 오류가 나타납니다 :이 무엇을 의미하는지 이해android에 테 더링을 할 때 네트워크 인터페이스에 주소가 없음

W/System.err(13578): java.net.SocketException: No address associated with interface: [wlan0][21] 

을,하지만 내 핫스팟 ADB 셸에서 netcfg 명령을 사용하여 활성화되어있는 동안 내가 인터페이스를 확인할 때, 나는 다음을 참조 :

wlan0 UP 192.168.43.1/24 0x00001043 02:1a:11:f0:3d:80 

그래서 런타임에 예외가 발생했지만 쉘 명령에서 하나만 표시된다는 사실을 이해하지 못합니다. 안드로이드가 나를 어떻게 든 막으려고하기 때문입니다. 무슨 일이 일어나고 있는지, 그리고이 인터페이스에서 멀티 캐스트 소켓을 어떻게 성공적으로 열 었는지 이해하는 데 도움이 될 것입니다. 아래와 같이 열어 봅니다 :

// Create the multicast socket 
final MulticastSocket socket = new MulticastSocket(0); 
Log.d(TAG, "Joining multicast group: 224.0.0.30"); 
final SocketAddress address = new InetSocketAddress(InetAddress.getByName("224.0.0.30"), socket.getLocalPort()); 
socket.joinGroup(address, NetworkInterface.getByName("wlan0")); 
Log.d(TAG, "Multicast socket using interface: " + socket.getNetworkInterface()); 

답변

0

이것은 경합 조건으로 인해 발생했는데, 생각해 보면 이상적입니다. 안드로이드가 sys/class/net에서 파일을 업데이트 할 수 있으려면 시간이 걸립니다. 내 해결 방법은 단순히 주소를 반환 할 때까지 반복적으로 폴링 한 다음 계속 진행하는 것입니다.