【问题标题】:How to discover devices on a network running your code [closed]如何在运行您的代码的网络上发现设备 [关闭]
【发布时间】:2019-07-13 17:39:18
【问题描述】:

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

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

我只能想到两种方法:

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

那么请问您,有没有更好的方法来实现这一点?

谢谢。

【问题讨论】:

  • 多播 DNS 可能是一个选项。
  • 研究“八卦协议”。每个服务器都可以跟踪它的邻居。因此,新服务器可能想要尝试一系列 IP 地址,但是当它找到一个对等点时,该对等点可以告诉它其他已知的服务器 ip。
  • 查看 bonjour/zeroconf
  • 设备可以订阅特定的组播组。请不要为此滥用广播,因为它会中断 LAN 上的每个主机,而不仅仅是您想要的特定主机。

标签: java javafx networking tcp server


【解决方案1】:

我这样做的方法是通过多播广播一个周期性的“心跳”并监听它。现在最好的做法是使用类似 jmDNS (https://github.com/openhab/jmdns) 的多播 DNS。

【讨论】:

    猜你喜欢
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多