使用 Java 获取域名
如何使用 Java 获取我正在运行的机器的域名?
例如,我的机器是一个服务器,其域名可以是ec2-44-555-66-777.compute-1.amazonaws.com
我试过了,但这并没有给我上面的名字。这给了我一个主机名,它看起来类似于InetAddress.getLocalHost().getHostName()
ip-0A11B222
如何使用 Java 获取我正在运行的机器的域名?
例如,我的机器是一个服务器,其域名可以是ec2-44-555-66-777.compute-1.amazonaws.com
我试过了,但这并没有给我上面的名字。这给了我一个主机名,它看起来类似于InetAddress.getLocalHost().getHostName()
ip-0A11B222
我想你可以尝试或方法。假设您的网络上运行着一个适当的名称服务,这两个应该可以解决问题。InetAddress.getCanonicalHostName()
InetAddress.getName()
The JavaDocs for getCanonicalHostName() 说
获取此 IP 地址的完全限定域名。尽力而为的方法,这意味着我们可能无法返回FQDN,具体取决于底层系统配置。
因此,如果要获取本地 FQDN,通常可以调用:InetAddress.getLocalHost().getCanonicalHostName()
getCanonicalHostName 为您提供完全限定的域名。我尝试过使用,但它只是得到你在命令行中看到的值,该值可能包含也可能不包含完全限定的名称。InetAddress.getLocalHost().getHostname()
hostname
要检查是否使用命令行(在 linux 中)设置了完全限定的域名,请使用 。hostname --fqdn
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