我一直在尝试获取我在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中那些计算机的名称列表?
答案 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);
这是平台独立的方式。