判断活动主机

CreazyJava 2010-04-22 11:03:14
现在有一个C类网络地址,该子网内可以分配的ip地址253个,如果才能判断这253个地址中,哪些是活动的
目前我所知道的有这些方案:
1.调用外部的ping,但是如判断ping通了呢(我试过截取ping的回显,判断是否包含“Reply from”,但是很明显这个方法效率很低,253个主机至少要将近2分钟才能遍历一遍)
2.通过snmp协议,也是要对子网内所有主机进行遍历,效率暂且不说,这个方法要求子网内所有主机都要安装snmp服务,这个代价比较高,可行性低
3.通过InetAddress类中提供的isReachable方法来判断,在这个方法中要设置超时的时间,时间如果短的话结果会不正确,长了话就没效率

各位给点意见或者建议吧~~~
...全文
244 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
华虫网 2010-05-13
  • 打赏
  • 举报
回复
ping 224.0.0.1
hq1305018 2010-04-22
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20030106/17/1332202.html
qjtttt 2010-04-22
  • 打赏
  • 举报
回复
如果服务器无法配置server端程序的话那没办法,我也只能想到你说的三种办法
qjtttt 2010-04-22
  • 打赏
  • 举报
回复
服务器启动ServerSocket,客户端Socket socket=new Socket(serverIP,serverPort)
try catch
zzp6604703 2010-04-22
  • 打赏
  • 举报
回复
mark
zfq642773391 2010-04-22
  • 打赏
  • 举报
回复
顶贴 我能想到的只有第一种方法 还是楼主厉害
CreazyJava 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yueguangkai001 的回复:]

我这边的程序没有你所说的那么多的ip,最多也就几个,用的是第一个方法来判断的,其他的两个方案不懂,帮顶
[/Quote]
嗯,几个ip的话是可行的,毕竟不会用多少时间
yueguangkai001 2010-04-22
  • 打赏
  • 举报
回复
我这边的程序没有你所说的那么多的ip,最多也就几个,用的是第一个方法来判断的,其他的两个方案不懂,帮顶
CreazyJava 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 kokobox 的回复:]

你可以写一个广播类,定时进行一次广播来判定主机的活动个数。

如果只是ping的话不太准确。
[/Quote]

能不能给个代码看看?
kokobox 2010-04-22
  • 打赏
  • 举报
回复
你可以写一个广播类,定时进行一次广播来判定主机的活动个数。

如果只是ping的话不太准确。

hbgzg3006 2010-04-22
  • 打赏
  • 举报
回复
同样用Jpcap,接收报文,可以直接提取出有相应的IP地址。前提是你的局域网没有用网桥分隔,那样的话,广播域会被分隔。
hbgzg3006 2010-04-22
  • 打赏
  • 举报
回复
楼主 不妨发一个arp欺骗的广播报文(可以用Jpcap来伪造报),然后其他所有的活动机器都会回复你的。
crazylaa 2010-04-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 creazyjava 的回复:]

看来这个帖子又沉了啊
因为机器配置比较高,所以我开启了8个线程进行测试,就用第一种方法,性能提高了不少
[/Quote]
再多开几个,。。。
想不出好办法,。。。
CreazyJava 2010-04-22
  • 打赏
  • 举报
回复
看来这个帖子又沉了啊
因为机器配置比较高,所以我开启了8个线程进行测试,就用第一种方法,性能提高了不少

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧