使用Java获取域名

stu*_*ped 11 java

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

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

Edw*_*rzo 11

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

getCanonicalHostName()的JavaDocs 说

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


bin*_*iam 6

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);
  }
}
Run Code Online (Sandbox Code Playgroud)

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


yka*_*ich -4

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