Java 动态IP地址的套接字

Java 动态IP地址的套接字,java,sockets,ip-address,dynamic-ip,Java,Sockets,Ip Address,Dynamic Ip,我正在创建一个可以在局域网上运行的客户机/服务器应用程序 首先,通过RMI,用户注册他们的我不知道什么(IP?),问题是:) 之后,我创建一个ServerSocket并等待accept() 现在客户端(或者更好的服务器..拥有注册用户)想要建立连接,但是。。。如果IP地址改变了怎么办 有一种在服务器上“注册一些东西”的方法,如果IP发生变化,所有这些都会继续工作吗 我试图更好地解释它:我不能注册一个IP地址,以后再连接它,因为如果IP改变,我失去了参考。我想注册“某物”,这是我从IP的 希望您理

我正在创建一个可以在局域网上运行的客户机/服务器应用程序

首先,通过RMI,用户注册他们的我不知道什么(IP?),问题是:)

之后,我创建一个ServerSocket并等待accept()

现在客户端(或者更好的服务器..拥有注册用户)想要建立连接,但是。。。如果IP地址改变了怎么办

有一种在服务器上“注册一些东西”的方法,如果IP发生变化,所有这些都会继续工作吗

我试图更好地解释它:我不能注册一个IP地址,以后再连接它,因为如果IP改变,我失去了参考。我想注册“某物”,这是我从IP的


希望您理解我的问题。

答案是使用DNS。DNS是为给定名称获取一个或多个IP地址的适当的取消引用机制。

您应该使用DNS,它可以将主机名转换为特定的IP地址。当然,我建议您使用suo异常来验证主机是否处于活动状态。你还有其他的解决办法;您可以直接从服务器或路由器的页面控制(如果您使用LAN中的基础设施)在LAN中设置固定ip。如果你远程飞行到你的计算机上,你将不得不使用DDN,在那里你可以使用DNS进行动态IP

你能给我举个例子吗?如果我使用getInetAddresses().nextElement().getHostName()来获取主机名,我会得到类似这样的fe80:0:0:7aca:39ff:febb:3b0b%en1,当我创建套接字时,会抛出一个异常:UnknownHostException:没有这样的接口en1。我让我的电脑通过局域网连接,另一台电脑通过Wifi连接(当然,它们在同一个网络上)。首先,你不需要主机名。只需将InetAddress本身和端口号传递给适当的构造函数:publicsocket(InetAddress地址,int-port)