单播发送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在您的代码中发送广播消息?
回顾一段时间后,我意识到@ MP23所说的含义:在发送单播消息之前,我需要放入一个** socket.setBroadcast(false)**。 –