有没有办法使用客户端Socket连接在服务器端获取客户端的计算机名?(例如:-Windows-PC)

时间:2015-03-14 18:29:11

标签: java sockets serversocket

Socket clientsocket = serverSock.accept();

String clientIP = clientsocket.getInetAddress().getHostAddress();

String clientName = clientsocket.getInetAddress().getHostName();

clientIPclientName都返回相同的值(如192.168.173.46)。

1 个答案:

答案 0 :(得分:0)

根据Oracle网站上的文档,我假设您的DNS设置不正确。以下文档适用于getHostName()方法:

  

public String getHostName()获取此IP地址的主机名。如果   这个InetAddress是用主机名创建的,这个主机名是   记住并归来;否则,将进行反向名称查找   执行,结果将根据系统返回   配置名称查找服务。如果查找名称服务是   必需,调用getCanonicalHostName。

     

如果有安全管理器,则首先使用checkConnect方法   用hostname和-1作为参数调用,看看是否有   允许操作。如果不允许该操作,它将返回   IP地址的文本表示。

     

返回:此IP地址的主机名,或者操作不是   安全检查允许的,IP的文本表示   地址。另请参见:getCanonicalHostName(),   SecurityManager.checkConnect(java.lang.String,int)

Source

我不知道如何解决此问题,但您可以尝试在主机文件中手动添加主机名。