Java语言列举所有局域网上打开的计算机的计算机名和ip,并且放在数组中,怎么写
1条回答 默认 最新
- 徐卡丘 2020-08-05 11:38关注
代码如下,需要根据自己情况做调整:
执行外部命令
String command = "net view"
Runtime r = Runtime.getRuntime();
Process p = r.exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(p
.getInputStream()));提取局域网IP
public static List getIPs()
{
List list = new ArrayList();
boolean flag = false;
int count=0;
Runtime r = Runtime.getRuntime();
Process p;
try {
p = r.exec("arp -a");
BufferedReader br = new BufferedReader(new InputStreamReader(p
.getInputStream()));
String inline;
while ((inline = br.readLine()) != null) {
if(inline.indexOf("接口") > -1){
flag = !flag;
if(!flag){
//碰到下一个"接口"退出循环
break;
}
}
if(flag){
count++;
if(count > 2){
//有效IP
String[] str=inline.split(" {4}");
list.add(str[0]);
}
}
System.out.println(inline);
}
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(list);
return list;
}根据IP提取主机名
public static Map getHostnames(List ips){Map<String,String> map = new HashMap<String,String>(); System.out.println("正在提取hostname..."); for(String ip : ips){ String command = "ping -a " + ip; Runtime r = Runtime.getRuntime(); Process p; try { p = r.exec(command); BufferedReader br = new BufferedReader(new InputStreamReader(p .getInputStream())); String inline; while ((inline = br.readLine()) != null) { if(inline.indexOf("[") > -1){ int start = inline.indexOf("Ping "); int end = inline.indexOf("["); String hostname = inline.substring(start+"Ping ".length(),end-1); System.out.println(hostname); map.put(ip,hostname); } } br.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println("提取结束!"); return map; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
- ¥15 Vue3地图和异步函数使用
- ¥15 C++ yoloV5改写遇到的问题
- ¥20 win11修改中文用户名路径
- ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
- ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
- ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
- ¥15 帮我写一个c++工程
- ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
- ¥15 关于smbclient 库的使用