【问题标题】:Find server ip address on local network在本地网络上查找服务器 IP 地址
【发布时间】:2020-07-04 21:01:47
【问题描述】:

我写了一个简单的服务器-客户端软件,运行在本地网络/24(255.255.255.0)上,不知道ip地址发生变化时如何查找。

  • 服务器的ip地址不是静态的。

  • 我无法保存mac地址然后从arp表中检索ip地址,因为它会在不同的机器上运行。

客户端找到正确 IP 地址的唯一方法是尝试整个范围,直到连接被接受?

【问题讨论】:

  • 如果您的客户端和服务器在同一个本地网络中,那么您只需使用 0.0.0.0 就可以让服务器监听所有本地 IP 地址。否则,您必须购买专用 IP 地址或购买托管服务器才能部署您的应用程序服务器。这样,您的服务器将可以通过 https://hostname/you-application-server 访问
  • 这就是我们有“名字”的原因。

标签: java server client client-server serversocket


【解决方案1】:

您可以使用服务器的hostname 代替IP。当 IP 更改时,主机名应保持不变。

您可以通过多种方式建立主机名。以编程方式:

 String hostName = InetAddress.getLocalHost().getHostName();

或者使用操作系统命令或工具。

例如,在 Windows 上可能是

ipconfig /all

在 Linux 上可能是

hostname

hostnamectl

一旦您知道主机名,您就可以使用它来建立连接。或者,您也可以在本地网络中的任何客户端上以编程方式获取服务器的 IP。在 Java 中,您可以使用以下代码:

InetAddress.getByName("serverHostName").getHostAddress()

【讨论】:

  • 我很困惑。我应该在每次连接之前获取服务器上的主机名和客户端上的主机地址,以便找到服务器的 IP 地址?客户端如何知道哪个是主机名?请注意,服务器每次都可以托管在不同的机器上。
  • 您如何知道如何访问 stackoverflow.com?答案是您知道名称,然后在连接请求中使用该名称(在您的情况下,将其输入到 Web 浏览器中)。你必须从一些知识开始。如果你不知道机器的名称,也不知道机器的地址,要么(a)你被卡住了,要么(b)你必须发明一些方法来找出问题。
猜你喜欢
  • 2021-01-14
  • 2011-07-02
  • 2012-04-09
  • 2016-10-05
  • 2015-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多