我有一个要求,我需要显示客户端计算机的IP地址和主机名。我必须仅为此活动使用chrome浏览器。 以下是我尝试的方法。
方法1 - 使用HttpServletRequest
HttpServletRequest request = RequestFilter.getRequest();
String ClientIP = request.getRemoteAddr();
String hostName = request.getRemoteHost();
logger.info("IP of the client:" + ClientIP);
logger.info("Host Name of the client :" + hostName);
使用这种方法request.getRemoteHost()
将公共IP作为主机名返回,而不是Coumpter的名称。
方法2 - 使用Inet地址
InetAddress IP = InetAddress.getLocalHost();
String ClientIP = IP.getHostAddress();
String hostName = InetAddress.getLocalHost().getHostName();
logger.info("IP of client:"+ClientIP);
logger.info("Host Name of client:"+hostName);
这种方法为我提供了服务器的IP和主机名详细信息。不是客户。
我试图通过IP使用
获取主机名InetAddress.getByName(request.getRemoteAddr()).getHostName()
但是,这个也会返回客户端的公共IP,而不是主机名。
我尝试使用Javascript获取主机名,但由于我只使用Chrome浏览器,因此无法使用ActiveXObject
。
在 cmd 上运行hostname
命令时,我能够获得正确的计算机名称,这是我想要的结果。
请提供一些方法,我可以将计算机名称作为客户端的主机名。请帮助,我被严重困扰。