Я пытаюсь настроить широковещательный или многоадресный сервер на 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());