java获取局域网内主机,java怎么获取局域网内所有主机ip

java怎么获取局域网内所有主机ip

关注:53  答案:2  mip版

解决时间 2021-01-27 21:31

e6cb1a03ad541b3098697807b7bf1798.png

提问者夢岭杺

2021-01-27 12:02

java怎么获取局域网内所有主机ip

最佳答案

e6cb1a03ad541b3098697807b7bf1798.png

二级知识专家风是甜的

2021-01-27 13:32

public void PingAll() throws Exception{

//首先得到本机的IP,得到网段

InetAddress host = InetAddress.getLocalHost();

String hostAddress = host.getHostAddress();

int k=0;

k=hostAddress.lastIndexOf(".");

String ss = hostAddress.substring(0,k+1);

for(int i=1;i <=255;i++){ //对所有局域网Ip

String iip=ss+i;

Ping(iip);

}

全部回答

e6cb1a03ad541b3098697807b7bf1798.png

1楼假装安慰

2021-01-27 14:40

1.得到局域网网段,可由自己机器的ip来确定 (也可以手动获取主机ip-cmd-ipconfig /all)

2.根据ip类型,一次遍历局域网内ip地址

java类,编译之后直接运行便可以得到局域网内所有ip,具体怎样使用你自己编写相应代码调用便可

代码如下::

package bean;

import java.io.*;

import java.util.*;

public class ip{

static public hashmap ping; //ping 后的结果集

public hashmap getping(){ //用来得到ping后的结果集

return ping;

}

//当前线程的数量, 防止过多线程摧毁电脑

static int threadcount = 0;

public ip() {

ping = new hashmap();

}

public void ping(string ip) throws exception{

//最多30个线程

while(threadcount>30)

thread.sleep(50);

threadcount +=1;

pingip p = new pingip(ip);

p.start();

}

public void pingall() throws exception{

//首先得到本机的ip,得到网段

inetaddress host = inetaddress.getlocalhost();

string hostaddress = host.gethostaddress();

int k=0;

k=hostaddress.lastindexof(".");

string ss = hostaddress.substring(0,k+1);

for(int i=1;i <=255;i++){ //对所有局域网ip

string iip=ss+i;

ping(iip);

}

//等着所有ping结束

while(threadcount>0)

thread.sleep(50);

}

public static void main(string[] args) throws exception{

ip ip= new ip();

ip.pingall();

java.util.set entries = ping.entryset();

iterator iter=entries.iterator();

string k;

while(iter.hasnext()){

map.entry entry=(map.entry)iter.next();

string key=(string)entry.getkey();

string value=(string)entry.getvalue();

if(value.equals("true"))

system.out.println(key+"-->"+value);

}

}

class pingip extends thread{

public string ip; // ip

public pingip(string ip){

this.ip=ip;

}

public void run(){

try{

process p= runtime.getruntime().exec ("ping "+ip+ " -w 300 -n 1");

inputstreamreader ir = new inputstreamreader(p.getinputstream());

linenumberreader input = new linenumberreader (ir);

//读取结果行

for (int i=1 ; i <7; i++)

input.readline();

string line= input.readline();

if (line.length() <17 || line.substring(8,17).equals("timed out"))

ping.put(ip,"false");

else

ping.put(ip,"true");

//线程结束

threadcount -= 1;

}catch (ioexception e){}

}

}

}

我要举报

如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

→点此我要举报以上信息!←

推荐资讯

大家都在看

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值