我有一个 Java 电子表格应用程序,它提供的功能之一(我开发的)是工作表共享。基本上,任何人都可以是客户端或服务器,因为该应用程序同时具有服务器和客户端代码。作为服务器的用户创建共享,指定 IP,然后创建共享并激活(最佳情况),服务器在其 IP 和选定端口上侦听客户端。
此时,客户端需要输入正在侦听的服务器的 IP 和端口才能连接。然后,服务器为该客户端创建一个新套接字并在单独的线程上与 in 通信,而服务器继续侦听另一个线程(传统的 TCP 行为)。这一切都很好。
我需要开发的是自动发现,例如客户端不需要输入 IP 或端口,他们只需从菜单中选择“加入共享...”,然后它就开始寻找服务器。当找到一个时,它应该发送它在该 IP 上的活动共享列表。然后用户从列表中选择要加入的共享,并连接。
但是,我对如何解决这个问题存有疑问。我应该像 DHCP 那样使用广播来轮询服务器吗?或者有没有更简单的方法?
我想实现的是:
客户端 -> 轮询本地网络 -> 找到服务器 -> 服务器向客户端发送活动共享列表 -> 客户端选择要加入的共享 -> 已连接!