Я работаю над приложением, которое использует функцию UDP Sender / Receiver для широковещательной рассылки IP-адреса текущего компьютера на адрес 255.255.255.255. В ответ UDP-сервер выдает ответ с другого устройства (в моем случае Платежный терминал) по IP-адресу. На устройствах на базе Android, таких как планшет или телефон, он работает как положено. Проблема начинается с компьютера ChromeOS. Я передаю информацию, но на второй машине с запущенным WireShark результата нет. Я знаю со страницы https://developer.android.com/topic/arc#check_for_networking_requirements
Android-приложения, работающие на ChromeOS, находятся за брандмауэром и не имеют прямого доступа к WiFi-устройству. Единственное решение - использовать Android Network Service Discovery, но я не знаю, как использовать его в этом сценарии. Ниже я вставляю код отправителя UDP, который работает везде, кроме ChromeOS
fun sendDatagramPacketSender(
bytePacketToSend: ByteArray,
targetIP: String,
targetPort: Int
): Completable {
return fromAction {
try {
val datagramPacket =
DatagramPacket(bytePacketToSend, bytePacketToSend.size, InetAddress.getByName(targetIP), targetPort)
mDatagramSocket.send(datagramPacket)
} catch (e: Exception) {
Log.e(TAG, e.message)
}
}
}
Есть ли у вас какое-либо другое решение для моей проблемы или пример использования NSD в моем случае?