Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法捕获广播到255.255.255.255的UDP包,但可以看到其他包_Java_Udp - Fatal编程技术网

Java 无法捕获广播到255.255.255.255的UDP包,但可以看到其他包

Java 无法捕获广播到255.255.255.255的UDP包,但可以看到其他包,java,udp,Java,Udp,我已经阅读了关于广播的问答,我得到了大致的想法。然而,当玩我的Java代码时,我感到困惑 我的IP地址是192.168.8.102。当我广播到192.168.8.255时,我可以接收来自我自己的包并在wireshark上捕获它。但是当我广播到255.255.255.255时,wireshark似乎丢失了它,尽管我的代码仍然接收到它。当我运行其他人的应用程序时,wireshark会捕获它向255.255.255.255广播的包 有什么解释吗?非常感谢 注:以下是我的Java代码的一部分: Data

我已经阅读了关于广播的问答,我得到了大致的想法。然而,当玩我的Java代码时,我感到困惑

我的IP地址是192.168.8.102。当我广播到192.168.8.255时,我可以接收来自我自己的包并在wireshark上捕获它。但是当我广播到255.255.255.255时,wireshark似乎丢失了它,尽管我的代码仍然接收到它。当我运行其他人的应用程序时,wireshark会捕获它向255.255.255.255广播的包

有什么解释吗?非常感谢

注:以下是我的Java代码的一部分:

DatagramSocket senderSocket = new DatagramSocket(null);
senderSocket.setReuseAddress(true);
senderSocket.setBroadcast(true);
senderSocket.bind(new InetSocketAddress(2000));
InetAddress address = InetAddress.getByName("255.255.255.255");
byte[] SendBuffer = contentSent.getBytes();

senderPacket = new DatagramPacket(SendBuffer, SendBuffer.length, address, 2000);
senderSocket.send(senderPacket);

如果套接字未绑定到特定接口,则发送到255.255.255.255的数据包将在默认接口上发送。如果这不是Wireshark正在监听的内容,这就解释了为什么它看不到它,而您的代码却看到了

如果您的套接字绑定到一个特定的接口,这就保证了该套接字上的发送在该接口上进行


正如评论中提到的EJP,不建议广播到255.255.255.255,部分原因是我提到的限制。您最好使用相关链接的广播地址,即192.168.8.255。

广播到255:255.255.255已经被弃用了大约25年。