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();