如何获取我在使用Java时正在运行的计算机的域名?
对于例如,我的机器是一台服务器,其域名可能是ec2-44-555-66-777.compute-1.amazonaws.com
使用Java获取域名
我想InetAddress.getLocalHost().getHostName()
但是这并没有给我起的名字上面。这给了我看起来类似的主机名ip-0A11B222
如何获取我在使用Java时正在运行的计算机的域名?
对于例如,我的机器是一台服务器,其域名可能是ec2-44-555-66-777.compute-1.amazonaws.com
使用Java获取域名
我想InetAddress.getLocalHost().getHostName()
但是这并没有给我起的名字上面。这给了我看起来类似的主机名ip-0A11B222
你真的需要域名还是IP地址足够?如果后者,尝试使用InetAddress.getLocalHost().getHostAddress()
是的,我真的需要域名.. – stumped 2011-05-05 00:49:15
我想你可以试试InetAddress.getCanonicalHostName()
或InetAddress.getName()
方法。假设有一个适当的名称服务在你的网络上运行,这两个应该做的伎俩。
的Javadoc getCanonicalHostName()说
获取完全合格的域名 此IP地址。尽最大努力 方法,这意味着我们可能无法通过 返回FQDN,具体取决于 底层系统配置。
今天我有同样的问题,发现了这个非常简单的解决方案:
System.getenv("userdomain");
它只适用于Windows – 2015-05-01 21:50:49
getCanonicalHostName为您提供了完全合格的域名。我曾尝试使用InetAddress.getLocalHost().getHostname()
,但它只是获得您在命令行中看到的hostname
值,该值可能包含或不包含完全限定的名称。
要检查是否使用命令行(在Linux中)设置完全限定的域名,请使用hostname --fqdn
。
公共字符串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
你有什么需要_for_? – 2011-05-04 23:45:23
也许这可能会帮助你一点(自己从来没有尝试过):http://blogs.captechconsulting.com/blog/david-tiller/accessing-the-dusty-corners-dns-java – Bart 2011-05-04 23:46:37
我刚编辑我的问题。我想我真的在寻找域名。 – stumped 2011-05-04 23:51:26