java - 使用 Java 的远程 PC 名称和 IP

标签 java

我正在尝试使用 Java 获取网络中连接的远程 PC 名称和 IP 地址。我能够获取 IP,但无法获取设备名称。我附上代码供引用。

Java 代码:

import java.io.IOException;
import java.net.InetAddress;

public class findIP {


    public static void main(String[] args) throws IOException {

        InetAddress localhost = InetAddress.getLocalHost();
        // this code assumes IPv4 is used
        byte[] ip = localhost.getAddress();
        String N = localhost.getHostName();

        for (int i = 1; i <= 254; i++)
        {
            ip[3] = (byte)i;
            InetAddress address = InetAddress.getByAddress(ip);
            InetAddress name = InetAddress.getByName(N);
        if (address.isReachable(1000))
        {
            System.out.println(address+"            " +"Device Name: "+name);
        }

最佳答案

首先,InetAddress.getByName(N) 正在尝试解析您的服务器主机名,而不是客户端。所以你的代码应该反射(reflect)你的意图:

String name = address.getHostName();

现在回答您的问题,InetAddress.getHostName() 将返回相应 IP 地址的反向 DNS 查找结果。并非您应用程序的所有客户端都会有 DNS 记录,因此您可能看不到“设备名称”。

关于java - 使用 Java 的远程 PC 名称和 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50274044/

相关文章:

java - 使用 fusedLocationAPI.requestLocationUpdates 不会调用 onLocationChanged

java - 如何用数组进行减法/除法

java - 据我所知, showinputdialog 返回字符串类型的输出,但它给了我一个错误,它无法将对象转换为字符串

java - servlet 存在时浏览器找不到它

Java 桌面应用程序客户端-服务器合二为一

java - 实时更改 JLabel 的文本值

java - 仅通过在 java 中提供我的自定义注释来在任何方法执行之前和之后执行一些代码

java - 在 Java 中获取客户端的每个 IP 地址的问题

java - Android TodoApp 与 ListView - 列表不显示

java - tomcat没有启动