使用 Java 获取域名

2022-09-04 22:00:50

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

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


答案 1

我想你可以尝试或方法。假设您的网络上运行着一个适当的名称服务,这两个应该可以解决问题。InetAddress.getCanonicalHostName()InetAddress.getName()

The JavaDocs for getCanonicalHostName()

获取此 IP 地址的完全限定域名。尽力而为的方法,这意味着我们可能无法返回FQDN,具体取决于底层系统配置。

因此,如果要获取本地 FQDN,通常可以调用:InetAddress.getLocalHost().getCanonicalHostName()


答案 2

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


推荐