为客户端更新 serversocket 的 ip 地址的最佳方法是什么?

What is the best way to update the ip adress of serversocket for clients?

我正在 Java.

中使用套接字编写一个小服务器示例

目前我正在使用它进行测试:

server= new Socket(InetAdress.getByName("127.0.0.1"),3333)

但我的计划是将其移至我的 Raspberry Pi。

很遗憾,我没有静态 IP 地址。

在代码中更新IP地址的正确方法是什么?

我考虑过将它存储在网络服务器上并通过 API 访问它,但这听起来不太安全,而且它可能会减慢我的代码速度。

首先,您对 InetAdress.getByName() 的使用是多余的。 Socket 有一个接受 String 作为输入的构造函数:

server = new Socket("127.0.0.1", 3333)

也就是说,您应该为您的服务器注册一个静态域名,并将其 DNS 记录设置为指向您服务器的 IP。然后客户端可以使用该域名连接到服务器,而不是直接使用 IP 地址:

server = new Socket("mydomain", 3333)

如果您的服务器没有静态 IP,可以使用大量免费且便宜的“动态 DNS”服务,这些服务可让您在当前 IP 地址发生变化时更新您的域(通常使用自动化工具来简化 detection-and-update 流程)。

如果服务器在路由器后面,许多路由器都built-in支持为您更新各种 DynDNS 服务。如果您的路由器支持此功能,您可以使用您的 DynDNS 帐户信息对其进行配置,以便它可以在其 WAN IP 更改时自动更新域。