【问题标题】:Java: How to make clients detect server on network?Java:如何让客户端检测网络上的服务器?
【发布时间】:2013-10-27 05:46:17
【问题描述】:

在大学期间,我有一个使用 TCP 套接字用 Java 制作简单聊天程序的个人项目。该项目仅用于教育目的。

我不太满意的一件事是客户端必须知道服务器的 IP 才能连接到它。所以我开始想,如果客户端能够检测到网络上是否有任何聊天服务器可用,那就太好了。

我怎样才能完成这样的机制?如果你能指出我正确的方向,我将不胜感激。 :-)

我认为服务器必须进行某种广播,但我不知道该怎么做。

PS:我知道可能还有其他/更好的方法可以做到这一点,但现在我特别感兴趣的是如何让客户端检测网络上的服务器。

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

【问题讨论】:

    标签: java client-server broadcast


    【解决方案1】:

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

    【讨论】:

    • 谢谢! JGroups 似乎很有趣。我绝对认为我可以使用它,它甚至还有制作聊天程序的教程:P
    【解决方案2】:

    看看 ZeroConf,它提供了宣布和发现服务的机制。 Apple 以 Bonjour 的名义广泛使用它。

    jmdns 项目是一个 Java 实现,运行良好。 http://jmdns.sourceforge.net/

    【讨论】:

    • 谢谢,但我认为这不符合我的需要。似乎您必须在服务器上配置一些 DNS 记录?就像我说的,服务器我的意思是我的程序就像一个服务器。我想在没有任何配置的任何机器上将程序作为服务器运行(尽管可以与程序一起分发的配置是可以接受的)。我没有时间真正了解 JmDNS,所以我可能错了。
    • 没有。它开箱即用,无需任何外部服务器或配置,我相信它完全符合您的需求。 (名称中的 DNS 是指 ZeroConf 技术基于多播 DNS,但不需要 DNS 服务器。
    • 好的。但它似乎没有任何文档,所以我将使用 JGroups。
    【解决方案3】:

    如果在您的网络上启用了多播,您可以尝试使用它。

    【讨论】:

      猜你喜欢
      • 2013-01-10
      • 2012-04-26
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 2011-12-26
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多