В настоящее время я занимаюсь разработкой службы, которая работает в офисной среде, и в настоящее время я пытаюсь использовать UPnP для обнаружения и управления службой - будет работать от 5 до 45 устройств.в тестировании я использую два устройства Samsung под управлением Android 8.0.0.
широковещательный адрес 239.255.255.250 порт 1900
Я использую Wireshark и наблюдаю за всеми сообщениями, отправляемыми по сети.в моем приложении я получаю только несколько сообщений, и даже они не на частоте Wireshark.
while (true)
{
try {
while (true)
{
buffer = new byte[1000];
dp = new DatagramPacket(buffer, buffer.length);
mcSocket.receive(dp);
String s = new String(dp.getData(), 0, dp.getLength());
InetAddress ia = dp.getAddress();
String hostAddress = ia.getHostAddress();
Log.e(TAG, "index= " + s);
if (s.contains("upnp:rootMaster"))
{
System.out.println();
}
}
}
catch (IOException ex)
{
Logger.getLogger(DLNASearchListener.class.getName()).log(Level.SEVERE, null, ex);
}
}
Я вижу сообщения, сгенерированные устройством, на котором я отлаживаю, некоторые сообщения с других устройств и иногда сообщения, сгенерированные моей службой, работающей на другом устройстве.
Я запускаю несколько сетей Wi-Fi, однако оба устройства настроены на один и тот же SSID (это еще один вопрос в будущем, связанный с соединением SSID).
Я пробовал многоадресную программу и, похоже,подобрать значительно больше передач.
Я пробовал блокировку Wi-Fi, и она не видела ничего хорошего - когда установлено, я ничего не получаю.
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiManager.MulticastLock multicastLock = wifi.createMulticastLock(masterService);
multicastLock.setReferenceCounted(true);
multicastLock.acquire();
это должно быть довольно просто, но, очевидно, я что-то упускаю,
любая помощь будет принята с благодарностью.