获取网络上的计算机列表

时间:2014-08-18 02:46:11

标签: java networking host

我一直在尝试获取我在Java上使用的网络上所有计算机的名称或IP。

我尝试过以两种不同的方式ping每个方法:

Process p = java.lang.Runtime.getRuntime().exec("ping -n 1 " + host);
returnval = p.waitFor();

即使失败,也会为每个地址返回0。

InetAddress.getByAddress(host).isReachable(timeout);

始终返回false

计算机显示在资源管理器中的Windows网络选项卡中。

有没有办法检索Java中那些计算机的名称列表?

3 个答案:

答案 0 :(得分:3)

窗?

net view

arp -a

最后一个提供MAC地址。

答案 1 :(得分:1)

扩展Xabsters答案我能够通过以下代码获得一个列表。

Runtime rt = Runtime.getRuntime();
    try {
        Process p = rt.exec("arp -a");

        BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));

        String s = null;
        while ((s = stdInput.readLine()) != null) {
            s = s.trim();
            if (!s.startsWith("I") && s.length >0)
            System.out.println(s.split(" ")[0]);
        }

    } catch (Exception e) {
        e.printStackTrace();
    }

答案 2 :(得分:1)

只是上述答案的补充。

InetAddress.getByName(host).isReachable(timeout);这可能是java方式(在不同的架构下可移植),但是没有用,因为它需要主机名称。使用IP地址时,您应该使用:

InetAddress.getByAddress(host).isReachable(timeout);

这是平台独立的方式。