2010-09-21 137 views
4

在我大学期间,我有一个使用TCP套接字在Java中进行简单聊天程序的个人项目。该项目仅用于教育目的。Java:如何让客户端检测网络上的服务器?

我不太满意的一件事是客户端必须知道服务器的IP才能连接到它。所以我不得不认为,如果客户端能够检测到网络上是否有任何聊天服务器可用,那将会很不错。

我该如何实现这样的机制?如果你能指引我正确的方向,我会很感激。 :-)我想服务器将不得不做某种广播,但我不知道如何做到这一点。 PS:我知道这样做可能还有其他更好的方法,但现在我特别关心如何让客户端检测网络上的服务器。

而服务器是指聊天应用程序的服务器端部分,不像Tomcat服务器。

回答

3

有很多方法可以做到这一点,但我建议你看看JGroups。聊天应用程序可能有点矫枉过正,但它使用多播提供了有趣的可能性,如无服务器体系结构。

+0

谢谢! JGroups似乎很有趣。我绝对认为我可以使用它,甚至有一个关于创建聊天程序的教程:P – Stian 2010-09-21 23:32:06

2

查看ZeroConf,它提供了通告和发现服务的机制。 Apple以Bonjour这个名字广泛使用它。

jmdns项目是一个Java实现,它工作得很好。 http://jmdns.sourceforge.net/

+0

谢谢,但我不认为这符合我的需要。似乎你必须在服务器上配置一些DNS记录?就像我说的,通过服务器,我的意思是我的程序就像一台服务器。我想在没有任何配置的任何机器上运行该程序作为服务器(可以随程序一起分发的配置也是可以接受的)。我没有时间真正阅读JmDNS,所以我可能是错的。 – Stian 2010-09-21 23:37:15

+0

不需要。它可以在没有任何外部服务器或配置的情况下使用,我相信它完美地满足您的需求。 (名称中的DNS是指ZeroConf技术是基于组播DNS的_based_,但它不需要DNS服务器)。 – 2010-09-22 05:37:22

+0

好的。但它似乎没有任何文档,所以我会去JGroups。 – Stian 2010-09-22 13:16:53

2

如果在网络中启用了多播,则可以尝试使用多播。

相关问题