Java – 按名称DNS获取IP地址(?)

我的问题如下:

我有一个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做过它并且效果很好.

点赞