Socket clientsocket = serverSock.accept();
String clientIP = clientsocket.getInetAddress().getHostAddress();
String clientName = clientsocket.getInetAddress().getHostName();
但clientIP
和clientName
都返回相同的值(如192.168.173.46)。
答案 0 :(得分:0)
根据Oracle网站上的文档,我假设您的DNS设置不正确。以下文档适用于getHostName()
方法:
public String getHostName()获取此IP地址的主机名。如果 这个InetAddress是用主机名创建的,这个主机名是 记住并归来;否则,将进行反向名称查找 执行,结果将根据系统返回 配置名称查找服务。如果查找名称服务是 必需,调用getCanonicalHostName。
如果有安全管理器,则首先使用checkConnect方法 用hostname和-1作为参数调用,看看是否有 允许操作。如果不允许该操作,它将返回 IP地址的文本表示。
返回:此IP地址的主机名,或者操作不是 安全检查允许的,IP的文本表示 地址。另请参见:getCanonicalHostName(), SecurityManager.checkConnect(java.lang.String,int)
我不知道如何解决此问题,但您可以尝试在主机文件中手动添加主机名。