单播发送UDP不工作,但广播发送UDP确实

问题描述:

我有,我的脑海里古怪,问题由此我可以发送,如果我有一个广播地址发送他们收到UDP包(192.168.1.255) 。如果我发送一个单播地址(192.168.1.83),数据包不会被传输(我已经使用Wireshark进行了检查)。单播发送UDP不工作,但广播发送UDP确实

发送函数是:

private void sendPacket(String data) { 
     try { 
      if (mSocket.isClosed()) { 
       Log.e(TAG, "Socket is closed: " + data); 
       return; 
      } 
      Log.d(TAG, "Send: " + data + " - " + myLocalIP.toString()+ " - " + myBcastIP.toString()); 
      DatagramPacket packet = new DatagramPacket(data.getBytes(), 
        data.length(), myLocalIP, BCAST_PORT); 

      mSocket.send(packet); 
     } catch (Exception e) { 
      Log.e(TAG, "Exception during write", e); 
     } 
    } 

我manefest文件具有以下权限:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

鉴于广播作品我不认为我在做什么错。请有任何想法吗?

您是否尝试过其他端口? 也许循环这种方法几次,UDP不保证100%传输数据包

您是否在使用socket.setBroadcast(true) somwhere在您的代码中发送广播消息?

+0

回顾一段时间后,我意识到@ MP23所说的含义:在发送单播消息之前,我需要放入一个** socket.setBroadcast(false)**。 –