我正在尝试获取客户端的主机名, 我使用这段代码:
public String GetHostIP(HttpServletRequest request) throws UnknownHostException {
String ipAddress = request.getRemoteAddr();
System.out.println("remoteAddress ipAddress is : " + ipAddress);
try {
InetAddress Adress = InetAddress.getByName(ipAddress);
clientHostName = Adress.getHostName();
System.out.println("Host name is " + clientHostName);
} catch (UnknownHostException e) {
System.out.println(e.getMessage());
}
return clientHostName;
}
我的问题是,为什么无论主机连接什么我都有相同的结果
remoteAddress ipAddress是:10.8.100.30主机名是:10.8.100.30
谢谢!
答案 0 :(得分:2)
来自documentation(粗体矿):
public String getHostName()
获取此IP地址的主机名。 如果使用主机名创建此
InetAddress
,则将记住并返回此主机名;否则,将执行反向名称查找,并将根据系统配置的名称查找服务返回结果。如果需要查找名称服务,请致电getCanonicalHostName
。如果有安全管理器,则首先使用hostname调用其
checkConnect
方法,并将-1作为其参数,以查看是否允许该操作。 如果不允许该操作,它将返回IP地址的文本表示。
This是checkConnect
的相关文档。