2011-12-15 89 views
4

我的问题是下面的IP地址:爪哇 - 按名称获取DNS

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

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

+0

这是家用网络工作?如果工作,这应该已经由您的网络团队管理。在服务器端没有太多的变化(你正在监听 - 只有在不同网络上有多个接口时才会出现复杂情况)。如果它在家,请检查你的路由器设置,看看它是否可以支持DNS。 – Nim 2011-12-15 11:21:07

回答

3

如果您的Java应用程序运行在互联网上的机器上,它已经有一个DNS服务可用,并且您的局域网中的其他计算机至少有一个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。在互联网上有很多可用的脚本(通常用于Linux/UNIX),并且有一些用于Windows的免费软件工具。我从来没有在Windows上做过这件事,但是我在Linux上做过,而且效果很好。

+0

谢谢你的回答。 dyndns是我正在尝试使用,我正在尝试配置它现在 – kri8or 2011-12-15 11:36:44

+0

不客气,很高兴提供帮助。 – DejanLekic 2011-12-15 11:38:42

-1

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