如何在本地网络上查找活动服务器的实例?

时间:2012-06-12 14:10:24

标签: java sockets networking client

我有一个Java电子表格应用程序,它提供的功能之一(我开发的)是工作表共享。基本上,任何人都可以是客户端或服务器,因为该应用程序同时具有服务器和客户端代码。作为服务器的用户创建共享,指定IP,然后创建并激活共享(最佳情况场景),服务器在其IP和选定端口上侦听客户端。

目前,客户端需要输入正在侦听的服务器的IP和端口才能连接。然后,服务器为该客户端创建一个新套接字,并在另一个线程上与in进行通信,同时服务器继续侦听另一个(传统的TCP行为)。这一切都很好。

我需要开发的是自动发现,例如客户端不需要输入IP或端口,只需从菜单中选择“加入共享...”,然后开始查找服务器。找到一个时,它应该在该IP上发送其活动共享列表。然后,用户从列表中选择要加入的共享,并且已连接。

但是,我对如何解决这个问题表示怀疑。我应该使用广播来轮询服务器,比如DHCP吗?或者有更简单的方法吗?

我想要实现的是:

客户 - >民意调查本地网络 - >找到一个服务器 - >服务器将活动共享列表发送到客户端 - >客户选择共享加入 - >连接!

1 个答案:

答案 0 :(得分:0)

从技术上讲,您正在寻找的是运行电子表格应用程序的活动服务器。

一种可能性是您的服务器代码每隔一段时间(例如每15秒)向网络发送一条“活动”消息。您的客户端代码将侦听这些“活动”消息,并生成有意义的电子表格服务器列表。

另一种可能性是使用您用来存储电子表格的相同数据库引擎来存储连接的服务器代码的IP和端口。客户端代码只会读取数据库表以获取连接。