我的问题如下:
我有一个java程序,一个服务器,正在等待来自客户端的TCP连接.
问题是,服务器用于等待连接的IP地址可能随时间而变化……
所以我希望客户能够以某种方式获得这个地址.
我想我需要配置一些DNS服务器,但我不确切知道如何.如果免费提供此类服务等…
所以我认为它会像这样工作:
服务器启动时获取其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);
}
}
}
PS.如果您运行Java服务器应用程序的计算机的IP正在更改(它在家庭计算机上运行并且ISP分配动态IP),则使用像http://www.dyndns.com或类似的免费服务.在这种情况下,它会变得有点复杂,因为您必须通知动态DNS IP更改.有些路由器内置了此功能,有些则没有.在这种情况下,您必须确保通知dynamicDNS. Internet上有许多脚本可以为您执行此操作(通常用于Linux / UNIX),并且有一些适用于Windows的免费工具.我从来没有在Windows上这样做过,但是我用Linux做过它并且效果很好.