我试图使用此方法获取主机名/计算机名称.不幸的是我只能获得localhost但不能获得其他计算机.
private String getHostName(String _strIP) {
try {
InetAddress inetAddress = InetAddress.getByName(_strIP);
System.out.println("getHostAddress : " + inetAddress.getHostAddress());
System.out.println("getHostName : " + inetAddress.getHostName());
System.out.println("getCanonicalHostName : " + inetAddress.getCanonicalHostName());
return inetAddress.getHostName();
} catch (UnknownHostException e) {
e.printStackTrace();
}
return strDefaultHostName;
}
Run Code Online (Sandbox Code Playgroud)
getHostAddress : 192.168.2.139
getHostName : 192.168.2.139
getCanonicalHostName : 192.168.2.139
Run Code Online (Sandbox Code Playgroud)
getHostAddress : 127.0.0.1
getHostName : localhost
getCanonicalHostName : localhost
Run Code Online (Sandbox Code Playgroud)
谢谢
我们已经大致确定了tangens答案中的问题.
我认为你可以通过将主机名放入主机文件中来解决问题.
%SystemRoot%\system32\drivers\etc\hosts
Run Code Online (Sandbox Code Playgroud)
是你要找的文件; localhost在这里定义.您希望为每个要解析的主机添加名称和地址行.
我从来没有试过这个.如果它不起作用,你会收回你的钱.
更新
以上是"快速入侵"解决方案.这基本上要求每当有人手动更改您感兴趣的主机的IP地址时,某人必须同时更改hosts要访问这些主机的任何计算机上的文件.
另一种方法是运行您自己的DNS服务器.当主机的地址发生变化时,您仍需要更新IP地址,但只需在一个地方进行更新,即可在整个网络中同时获得正向和反向名称解析.这需要更多的设置,但从长远来看更容易维护.
这是一个非常有用的参考:http://www.dns.net/dnsrd/servers/windows.html
他们提到"内置"Microsoft DNS服务器是一个糟糕的解决方案(直到Windows 2003 Server中的一个),但提到至少两个选择,一个商业和一个免费.BIND目前正在将大部分互联网连接在一起,DNS智能化,而且它们也拥有Windows端口也很棒.
| 归档时间: |
|
| 查看次数: |
8702 次 |
| 最近记录: |