【问题标题】:How to efficiently network an application in Java如何在 Java 中高效地联网应用程序
【发布时间】:2013-10-02 22:28:57
【问题描述】:

我想知道是否有人可以给我一个线索。情况是我们有一台计算机有一个服务器应用程序,其余的有一个客户端应用程序。现在我的问题是我将如何跟踪服务器 IP 地址?我想要的是让客户端自动搜索服务器应用程序,而不考虑 IP 地址并找到它,因为使用无线网络的计算机正在使用 DHCP。所以我想知道是否有任何东西可以隐藏在使用 Java 的计算机中,其他计算机可以使用它来识别应用程序。谢谢。

【问题讨论】:

  • 是在同一个网络上还是通过互联网连接?
  • 这就是 DNS 的用途。你有 DNS 服务吗?

标签: java networking


【解决方案1】:

正如@Peter Lawrey 已经提到的那样,“好”的方法是使用 DNS(恕我直言,这是生产环境中唯一的解决方案),我更喜欢这种解决方案。

你还有另外两种可能:

  • 让服务器在网络上广播他的地址。
  • 让客户端扫描网络。

这两种解决方案都不理想,因为您在网络上制造了很多噪音,可能被防火墙阻止等。因此,我真的建议您使用 DNS。

如果您不能使用 DNS 解决方案,我会选择让客户端搜索服务器的解决方案。

看看这个SO 问题,可能会让你开始。

【讨论】:

    【解决方案2】:

    如果它们在同一个物理网络上,您的服务器可以通过 UDP 将其 IP 地址广播到该子网的广播地址。

    您甚至可以遵循uPnP 标准。

    或者,您可以从已知的其他位置(例如 Web 服务器)托管服务器的位置。例如,调用已知 Web 服务器上的操作以检索服务器的 IP 地址。这允许您利用 DNS 查找第一个主机,然后从那里开始。

    【讨论】:

      【解决方案3】:

      如果您知道服务器的 DNS 名称,则可以使用该名称代替 IP。 Java 负责 DNS 查找。

      否则,我想最简单的解决方案就是扫描网络的 IP 范围,然后尝试连接到每个 IP 并测试它是否有效。

      其他解决方案将包括服务器广播,并且对于托管在小型网络中的应用程序来说会更加复杂并且可能过度杀伤力。

      【讨论】:

      • 我明白了,实际上这个应用程序是针对网吧的,当计算机启动时,它必须寻找要从服务器控制的服务器计算机
      • 我会选择 DNS 方法。如果他们运行的是 Windows,您可以使用 Windows 分配的 PC 名称作为服务器的 DNS 名称,您应该没问题。或者,一些(阅读:更好的)路由器允许将静态 IP 分配给网络中的某些 PC。所以你可以只为服务器分配一个静态 IP。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多