有没有办法在局域网内发送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广播的首选方式是什么?
答案 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