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

问题描述 投票:4回答:2

我的问题如下:

我有一个java程序,一个服务器,正在等待来自客户端的TCP连接。问题是,服务器用于等待连接的IP地址可能随时间而变化......所以我希望客户能够以某种方式获得此地址。我想我需要配置一些DNS服务器,但我不确切知道如何。如果免费提供此类服务等...

所以我认为它会像这样工作:服务器启动时获取其IP。然后访问一些DNS(?)服务以使此IP可用。那么客户端就会生成像getByName这样的东西,看看建立连接的服务器的IP是什么。 会这样吗?如果是这样,这是如何在java服务器代码上,我可以使用什么DNS服务(以及如何配置它?)

java sockets tcp dns
2个回答
3
投票

如果您的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做过它并且效果很好。


-1
投票

通常,客户端应通过DNS而不是IP连接到服务器。只需将客户端配置为连接到example.com并配置DNS名称example.com以指向您的IP地址。

© www.soinside.com 2019 - 2024. All rights reserved.