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

时间:2015-09-07 08:19:43

标签: java udp

我已经阅读了有关广播的Q& A,我得到了一般的想法。但是,在使用我的Java代码时,我很困惑。

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

任何解释?非常感谢!

PS。这是我的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);

1 个答案:

答案 0 :(得分:0)

如果您的套接字未绑定到特定接口,则发送到255.255.255.255的数据包将在默认接口上发送出去。如果那不是Wireshark正在监听的那个,那就解释了为什么它没有看到它,但你的代码却没有。

如果您的套接字绑定到特定接口,则可以保证该套接字上的发送在该接口上发送。

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