向局域网中的每个人发送UDP数据包?

时间:2013-06-23 14:23:13

标签: java networking udp

有没有办法在局域网内发送UDP数据包,以便每台机器都能收到它? (当然没有保证,因为它的UDP)。

喜欢,发送请求“你好,有人吗?”然后听取回应?

我发送和接收没有问题,只是想知道除了尝试每个IP地址之外还有其他办法......

编辑:这就是我目前使用的内容:

...
multicastSocket = new MulticastSocket();
multicastSocket.setBroadcast(true);
broadcastGroup = InetAddress.getByName("255.255.255.255");
// multicastSocket.joinGroup(broadcastGroup);
...

最后一行代码被注释掉,因为它会引发异常。现在我已经读过,发送一个数据包到255.255.255.255是“多年以来被弃用”,很可能不适用于许多局域网。此外,我不确定我是否需要MulticastSocket,或者正常DatagramSocket是否也可以。但无论如何,现在发送UDP广播的首选方式是什么?

2 个答案:

答案 0 :(得分:3)

好吧,我自己发现了它:

只需在224.0.0.0和239.255.255.255之间的任何IP上打开MulticastSocket并使用joinGroup。当然,与该组播组相关的所有内容都需要在同一个组播IP上接收。 我这样做是为了发送和接收,但是,我认为你在接收消息时只需要它。如果要向IP组中的每个人广播数据包,只需将其发送到您选择的IP即可。

您还应该setBroadcast(true);允许广播某些(?)系统。

答案 1 :(得分:-1)

从技术上讲,您实际上需要广播该消息。基本上你需要MulticastSocket,在客户端使用这种套接字来监听服务器向多个客户端广播的数据包。

以下是帮助您实现这一目标的java教程:

http://docs.oracle.com/javase/tutorial/networking/datagrams/broadcasting.html