使用Java获取域名

时间:2011-05-04 23:38:03

标签: java

如何使用Java获取我运行的机器的域名?
例如,我的机器是一个域名可能为ec2-44-555-66-777.compute-1.amazonaws.com

的服务器

我试过InetAddress.getLocalHost().getHostName(),但这并没有给我上面的名字。这给了我一个类似于ip-0A11B222

的主机名

4 个答案:

答案 0 :(得分:11)

我猜您可以尝试使用InetAddress.getCanonicalHostName()InetAddress.getName()方法。假设你的网上有一个正确的名称服务,这两个应该可以解决问题。

getCanonicalHostName()的JavaDocs说

  

获取完全限定的域名   这个IP地址。最大的努力   方法,意思是我们可能无法做到   返回FQDN取决于   底层系统配置。

答案 1 :(得分:5)

getCanonicalHostName 为您提供完全限定的域名。我尝试使用InetAddress.getLocalHost().getHostname(),但它只获取您在命令行中看到的hostname值,该值可能包含也可能不包含完全限定名称。

要检查是否使用命令行(在linux中)设置了完全限定的域名,请使用hostname --fqdn

getCanonicalHostName

  

public String getCanonicalHostName()获取完全限定的域   此IP地址的名称。尽力而为的方法,意思是我们可能不会   能够根据底层系统返回FQDN   配置。

/** Main.java */
import java.net.InetAddress;  

public class Main {

  public static void main(String[] argv) throws Exception {

    byte[] ipAddress = new byte[] {(byte)127, (byte)0, (byte)0, (byte)1 };
    InetAddress address = InetAddress.getByAddress(ipAddress);
    String hostnameCanonical = address.getCanonicalHostName();
    System.out.println(hostnameCanonical);
  }
}

示例取自: http://www.java2s.com/Tutorials/Java/java.net/InetAddress/Java_InetAddress_getCanonicalHostName_.htm

答案 2 :(得分:-4)

您真的需要域名,还是IP地址足够?如果是后者,请尝试使用InetAddress.getLocalHost().getHostAddress()

答案 3 :(得分:-4)

我今天遇到了同样的问题,并找到了这个非常简单的解决方案:

  System.getenv("userdomain");