我的问题如下:
我有一个 java 程序,一个服务器,正在等待来自客户端的 TCP 连接。 问题是,服务器用于等待连接的 IP 地址会随时间变化...... 所以我希望客户能够以某种方式获得这个地址。 我想我需要配置一些 DNS 服务器,但我不知 Prop 体怎么做。如果有这样的服务是免费的等等……
所以我认为它会像这样工作:
服务器在启动时获取其IP。然后访问一些 DNS (?) 服务以使该 IP 可用。
然后客户端做getByName之类的东西,看看服务器的IP是多少来建立连接。
会是这样吗?如果是这样,
这在 java 服务器代码上如何,我可以使用什么 DNS 服务(以及如何配置它?)
最佳答案
如果您的 Java 应用程序在 Internet 上的计算机上运行,则它已经具有可用的 DNS 服务,并且它已经具有至少一个可供 LAN 中的其他计算机可见的 IP。使用类似于我在下面编写的 Java 代码来获取 IP 地址。
import java.net.*;
import java.io.*;
public class Ip {
public static void main ( String[] args ) throws IOException {
String hostname = args[0];
try {
InetAddress ipaddress = InetAddress.getByName(hostname);
System.out.println("IP address: " + ipaddress.getHostAddress());
} catch ( UnknownHostException e ) {
System.out.println("Could not find IP address for: " + hostname);
}
}
}
附言。如果运行 Java 服务器应用程序的机器的 IP 正在改变(它在家用机器上运行并且 ISP 分配动态 IP),那么使用像 http://www.dyndns.com 这样的免费服务或类似的。在这种情况下,它会变得有点复杂,因为您必须将 IP 更改通知您的动态 DNS。有些路由器内置此功能,有些则没有。在这种情况下,您必须确保通知动态 DNS。 Internet 上有大量脚本可以为您执行此操作(通常用于 Linux/UNIX),并且有一些用于 Windows 的免费软件工具。我从来没有在 Windows 上这样做过,但我在 Linux 上做过,而且效果很好。
关于Java - 通过名称 DNS (?) 获取 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8519220/