Java 有没有办法让客户';使用客户端套接字连接的服务器端的计算机名?(例如:-Windows PC)

Java 有没有办法让客户';使用客户端套接字连接的服务器端的计算机名?(例如:-Windows PC),java,sockets,serversocket,Java,Sockets,Serversocket,但是clientIP和clientName都返回相同的值(如192.168.173.46)。根据Oracle网站上的文档,我假设您的DNS设置不正确。以下文档适用于getHostName()方法: 公共字符串getHostName()获取此IP地址的主机名。如果 此InetAddress是使用主机名创建的,此主机名将 记住并返回;否则,将执行反向名称查找 执行,并根据系统返回结果 已配置名称查找服务。如果名称服务的查找是 必需,请调用getCanonicalHostName 如果存在安全管理器,

但是
clientIP
clientName
都返回相同的值(如192.168.173.46)。

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

公共字符串getHostName()获取此IP地址的主机名。如果 此InetAddress是使用主机名创建的,此主机名将 记住并返回;否则,将执行反向名称查找 执行,并根据系统返回结果 已配置名称查找服务。如果名称服务的查找是 必需,请调用getCanonicalHostName

如果存在安全管理器,则首先使用其checkConnect方法 以主机名和-1作为参数调用,以查看 允许操作。如果不允许该操作,它将返回 IP地址的文本表示形式

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


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

如果尝试
clientsocket.getInetAddress().getCanonicalHostName()
?@Ihsan clientsocket.getInetAddress().getCanonicalHostName()也会返回与192.168.173.46相同的结果。
Socket clientsocket = serverSock.accept();

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

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