如何在同一个局域网内找到 Socket.IO 服务器?

lel*_*tai 2 javascript java networking node.js socket.io

我开发了一个连接同一网络上的设备的应用程序。

任何设备都可以作为服务器,我希望客户端能够自动找到服务器,而无需用户手动输入服务器的 IP 地址。

这是我打算这样做的方式:

  1. 找到客户端的IP,例如192.168.0.2
  2. 循环通过 192.168.0.(0->255)
  3. 尝试连接所有这些 IP 直到连接成功

这是正确的方法吗?我可以做得更快吗?同一个网络上的IP总是在xxx(0->255)范围内吗?

如果相关,我同时使用 Java 和 JavaScript(Node.js)。

Gho*_*ica 5

这里的一种选择:而不是“迭代”地址范围并向每个地址发送单独的数据包;您可以考虑向整个子网发送广播

换句话说:你的客户只是大喊“我在这里”;服务器“听到”并响应;类似于 DHCP 等协议的工作方式。

编辑关于如何对“广播未接听”做出反应的评论:

实际上,您现在越来越接近那些使“分布式”计算变得困难的主题。可能会出现许多问题;以及许多不同的解决方案。

它开始于:您是否进行一次广播;还是尝试多次?!并且可能会增加后续广播之间的延迟?

事情是:这里没有人可以告诉你。答案在很大程度上取决于您的“域”,以及对您的应用程序用户最有意义的内容。

我的建议是:研究现有的做类似事情的开源产品;并研究他们发现了什么样的问题;以及他们如何处理。我知道,这是相当广泛的;但那个“广度”来自“整个主题真的很广泛”。