2014-12-01 6 views
0

Я пытаюсь настроить широковещательный или многоадресный сервер на Android, пока он действует как «горячая точка». После некоторых начальных проблем с трансляцией (получение недостижимых ошибок сети) я увидел, что это нормально для Android, поэтому я решил реализовать его через Multicast, так как мы рассматривали это как предпочтительное в любом случае. Когда я сделал это, я получаю следующее сообщение об ошибке:Сетевой интерфейс не имеет адреса при подключении в android

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

Я понимаю, что это значит, но когда я проверяю интерфейсы, а моя точка доступ активна, используя команду netcfg в ADB Shell, я вижу следующее:

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

Так что я не понимаю, почему во время выполнения я получаю исключение, связанное с адресом, но команда оболочки показывает один, если только это не потому, что Android пытается каким-то образом остановить меня. Любая помощь в понимании того, что происходит и как я могу успешно открыть многоадресный сокет на этом интерфейсе, будет отличным. Я пытаюсь открыть его, как показано ниже:

// 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

Оказывается, это связано с состоянием гонки, что имеет смысл после того, как я подумал об этом. Некоторое время, прежде чем Android сможет обновить файл, потребуется некоторое время в sys/class/net. Мое решение состояло в том, чтобы просто опросить несколько раз, пока он не вернется с адресом, а затем продолжите.

 Смежные вопросы

  • Нет связанных вопросов^_^