如何发现运行代码的网络上的设备

时间:2019-07-13 17:39:18

标签: java javafx networking tcp server

我正在开发Java应用程序,人们可以使用它在网络上的设备之间发送数据。每个安装了代码的设备都在运行TCP服务器,并且正在侦听某个端口。现在,我希望用户可以选择“扫描”网络中运行我的代码的其他设备,并在屏幕上显示一个列表,以选择要将数据发送到的设备。

如何找到正在运行我的代码的设备?

我只能想到两种方式:

  • 尝试连接到特定端口上的每个可能的IP,但这似乎需要花费一定的时间
  • 使用IP在其他端口上启动UDP广播,让其他服务器响应,但这需要运行两台服务器并有两个开放端口

所以我请问您,有没有更好的方法来实现这一目标?

谢谢。

1 个答案:

答案 0 :(得分:1)

我这样做的方法是通过多播广播一个周期性的“心跳”,并进行监听。如今,最佳实践是使用类似jmDNS(https://github.com/openhab/jmdns)之类的多播DNS。