使用UDP广播的Java网络发现,

使用UDP广播的Java网络发现,,java,networking,udp,discovery,Java,Networking,Udp,Discovery,我有一堆客户机(从机),它们监听来自服务器(主机)的消息。我正在尝试创建一个实用程序来发现客户机。为此,我将向子网IP地址(192.168.1.255)广播一条消息。到现在为止,一直都还不错。现在,当我收到数据包(DatagramPacket)时,我将使用getAddress方法来计算客户机IP地址。但我的问题是,在我广播消息之后,所有客户端都会发回响应,但当我使用.receive方法接收响应时,我从哪个客户端接收响应,我应该如何获得所有客户端IP地址?我是否需要多次从主机发送消息,每次检查响应

我有一堆客户机(从机),它们监听来自服务器(主机)的消息。我正在尝试创建一个实用程序来发现客户机。为此,我将向子网IP地址(192.168.1.255)广播一条消息。到现在为止,一直都还不错。现在,当我收到数据包(DatagramPacket)时,我将使用getAddress方法来计算客户机IP地址。但我的问题是,在我广播消息之后,所有客户端都会发回响应,但当我使用.receive方法接收响应时,我从哪个客户端接收响应,我应该如何获得所有客户端IP地址?我是否需要多次从主机发送消息,每次检查响应并检查数据包以获得地址?最好的方法是什么?
感谢您的帮助

“我将向子网IP地址(192.168.1.255)广播一条消息”,这是完全错误的。正确的方法是使用多播。广播会中断网络上的每台主机,包括路由器、交换机、打印机等。事实上,广播已被弃用,IPv6没有广播,因此您无法更新它以支持IPv6。让客户端订阅特定的多播组,服务器可以向该组发送消息。然后客户可以用单播回复。请您详细说明一下好吗?“让客户端订阅特定的多播”到底是什么意思?从属设备是响应特定消息的物联网设备。OK。如果这些是物联网设备,那么您确实需要为IPv6做好准备,而IPv6根本不支持广播。主机上的应用程序需要订阅一个多播组,可能是您在组织本地范围
239.0.0.0/8
中选择的多播组。可能已经存在设备上的应用程序订阅的特定分配的多播组。您可以查看已注册的多播组的。这不起作用,因为IoT设备提供商尚未为这些设备分配任何组。像EchoNet有一个组一样,这些设备没有任何组。我试图广播消息,但当我检查响应包IP地址时,似乎是我的笔记本电脑IP,我正在从它发送消息。为什么会这样?谢谢你的帮助