在本地网络中查找服务器IP地址

3

我编写了一款简单的服务器-客户端软件,它在本地网络/24(255.255.255.0)上运行,但我不知道在 IP 地址更改后如何查找 IP 地址。

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

  • 我不能保存 MAC 地址,然后从 ARP 表中检索 IP 地址,因为它将运行在不同的机器上。

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


如果您的客户端和服务器在同一本地网络中,则可以通过使用0.0.0.0使您的服务器侦听所有本地IP地址来实现。 否则,您必须购买专用IP地址或购买托管服务器以部署应用程序服务器。这样,您的服务器将可通过https://hostname/your-application-server访问。 - Katy
这就是为什么我们有“名称”的原因。 - user13784117
1个回答

1
你可以使用服务器的主机名,而不是IP地址。当IP地址更改时,主机名应保持不变。
您可以以多种方式建立主机名。可以通过编程方式:
 String hostName = InetAddress.getLocalHost().getHostName();

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

例如,在Windows上,可以使用以下命令:

ipconfig /all

在Linux上可能是这样的:
hostname

或者

hostnamectl

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

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

我有些困惑。每次连接之前,我应该在服务器上获取HostName,在客户端上获取hostAddress,以便找到服务器的IP地址吗? 客户端如何知道哪个是主机名?请注意,服务器每次都可以托管在不同的机器上。 - butexa
你怎么知道如何访问stackoverflow.com?答案是你知道这个名字,然后在连接请求中使用这个名字(在你的情况下,将其输入到Web浏览器中)。你必须从一些知识开始。如果你不知道机器的名称,也不知道机器的地址,那么要么(a)你被卡住了,要么(b)你必须发明一些方法来找出一些信息。 - user13784117

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接