UDP广播:摩托罗拉阻止传入端口?

时间:2014-12-05 15:56:46

标签: android udp broadcast

我已经使用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

2 个答案:

答案 0 :(得分:2)

My Moto G(4.4.4)显示了同样的问题。发送UDP数据包有效,但接收UDP数据包不起作用。我发现有几个网站为其他几家供应商描述了同样的问题。

解决方法: 我使用MulticastSocket(而不是DatagramSocket)解决了我的Moto G的问题,TTL = 1且IP = 224.0.0.1。

答案 1 :(得分:2)

  1. 使用Hash代替MulticastSocket
  2. 将广播消息发送到多播地址DatagramSocket
  3. 发件人

    (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);