我已经使用WiFi网络为发送和接收 UDP广播创建了一个库,我的代码运行正常,我尝试使用 Nexus 5 和三星Galaxy S2 ,通讯效果很好,他们都发送和接收。
当我使用 Moto G 尝试相同的代码时,设备可以将包发送到其他手机,但无法接收任何内容。我可以归咎于Moto G,因为代码在其他两个设备中运行良好,并且它们都可以接收Moto G发送的包。我甚至尝试了两种不同的Moto G,一种是一种,一种是根据特定的防火墙策略。
我尝试使用不同的端口,老实说不是很多,但我想问题不在那里。
任何可能出错的线索?
每个设备的Android版本: Nexus 5:4.5 S2:4.1.2 Moto G 1:4.4.2 Moto G 2:4.4.1(不确定)
我定位SDK 16.我的code is here。
答案 0 :(得分:2)
My Moto G(4.4.4)显示了同样的问题。发送UDP数据包有效,但接收UDP数据包不起作用。我发现有几个网站为其他几家供应商描述了同样的问题。
解决方法:强> 我使用MulticastSocket(而不是DatagramSocket)解决了我的Moto G的问题,TTL = 1且IP = 224.0.0.1。
答案 1 :(得分:2)
Hash
代替MulticastSocket
。DatagramSocket
)(224.0.0.0 to 239.255.255.255
final String ip = "224.0.0.3";
final int port = 8091;
DatagramSocket socket = new DatagramSocket();
DatagramPacket packet = new DatagramPacket(msg,msg.length, InetAddress.getByName(ip),port);
socket.send(packet);