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

时间:2017-02-07 06:43:08

标签: javascript java node.js networking socket.io

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

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

我打算这样做:

  1. 查找客户端的IP,例如192.168.0.2
  2. 循环通过192.168.0。(0-> 255)
  3. 尝试连接所有这些IP,直到连接成功
  4. 这是正确的方法吗?我可以更快地完成吗?在同一网络上的IP是否始终在x.x.x.(0-> 255)范围内?

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

2 个答案:

答案 0 :(得分:2)

这里有一个选择:而不是"迭代"地址范围和向每个地址发送单个数据包;您可以考虑向整个子网发送broadcast

换句话说:你的客户只是喊叫"我在这里&#34 ;;服务器"听到"那并回应;类似于DHCP协议的工作原理。

编辑关于如何应对"广播未回答":

的评论

实际上,您现在正在接近那些制作"分发"计算。有很多问题可以解决;以及许多不同的解决方案。

首先是:你选择一个广播;或者多次尝试?!也许会增加后续广播之间的延迟?

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

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

答案 1 :(得分:0)

udp广播是我的客户端在本地网络上找到我的服务器的方式。 服务器发回套接字服务器用于连接的端口号

服务器运行时,响应几乎是即时的,所以我只有2秒钟的超时时间,只能尝试一次