#android #multicastsocket
Вопрос:
Я использую multicastsocket для обнаружения локальной сети на Android, вот мой код:
WifiManager wifiManager = (WifiManager) context.getApplicationContext()
.getSystemService(Context.WIFI_SERVICE);
multicastLock = wifiManager.createMulticastLock("multicast.test");
multicastLock.acquire();
this.port = port;
group = InetAddress.getByName(ip);
sock = new MulticastSocket(port);
sock.setTimeToLive(1);
sock.setLoopbackMode(false);
System.err.println("loop back: " sock.getLoopbackMode());
sock.setSoTimeout(3000);
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
networkInterface = interfaces.nextElement();
if (networkInterface.getName().equals("wlan0")) {
sock.joinGroup(new InetSocketAddress(group, port), networkInterface);
return;
}
}
и, как вы видите, я вызываю sock.setLoopbackMode(false), чтобы предотвратить повторную передачу данных, но это не сработало.
Я называю прием таким образом:
DatagramPacket receivePack = new DatagramPacket(receiveBytes,
receiveBytes.length);
sock.receive(receivePack);
Я понятия не имею, почему setLoopbackMode(false) не сработал. Я все еще получаю данные о том, что отправляю.