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


Socket clientsocket = serverSock.accept();
String clientIP = clientsocket.getInetAddress().getHostAddress();
String clientName = clientsocket.getInetAddress().getHostName();

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

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

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

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

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

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

最新更新