使用Java的远程PC名称和IP

时间:2018-05-10 13:26:28

标签: 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);
        }

3 个答案:

答案 0 :(得分:2)

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

String name = address.getHostName();

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

答案 1 :(得分:1)

替换

InetAddress name = InetAddress.getByName(N);

String hostName = address.getHostName();

通过调用getByName获得的是IP地址,而不是主机名。阅读docs

答案 2 :(得分:1)

这应该

 InetAddress host = InetAddress.getByName("xxx.xxx.xxx.xxx");
 System.out.println(host.getHostName());