我正在使用UDP发送器/接收器功能将当前计算机ip地址广播到255.255.255.255地址的应用程序上工作。作为响应,UDP服务器从其他设备(在我的情况下为付款终端)的IP地址给出响应。在基于Android的设备(如平板电脑或手机)上,它可以正常工作。问题始于ChromeOS计算机。我广播了信息,但是在运行WireShark的第二台计算机上没有结果。我从页面https://developer.android.com/topic/arc#check_for_networking_requirements知道 ChromeOS上运行的android应用位于某些防火墙后面,并且无法直接访问WiFi设备。唯一的解决方案是使用Android网络服务发现,但我不知道在这种情况下如何使用它。下面,我粘贴了除Chrome OS之外所有地方都可以使用的UDP发送器代码
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的示例,您还有其他解决方案吗?