请你给“在线”一个定义。 为什么慢?首先你要把或者这个ip的原理搞清楚。 我们没有任何一种协议可以知道局域网上存在哪些主机,除非dhcp服务器开放这种接口。我们能做的就是穷举,不但要穷举所有的ip,而且我们要穷举各种常见的端口,尝试建立连接,如果有反应就视作“在线”。 换言之,除了dhcp,如果一台主机明明联网,拥有一个分配的ip,但是它不响应任何端口的请求,你无法判断它是否在线。另外,我们必须给接收响应一个时间范围。如果目标主机收到请求10秒钟才返回,那么在10秒钟以前,你不能确认它是否在线。 原理搞清楚了,就能理解“慢”是什么原因了。慢的原因有两个,一个是超时时间过大,使得无效的请求需要足够长的时间才确认它的确没有响应,另一个是尝试足够多的端口,这样判断更准确。 因此你完全可以让它“快”,只要按照我分析的,将timeout调小,以及尝试访问更少的端口——但是快会导致准确性的下降,这是不能避免的,所谓快慢,你必须做出一个权衡。
查看自己的IP..比如192.168.1.156 那么你就弄个线程池(大小255) ping 1.1到1.255 如果有返回添加到集合否则跳过...
7,765
社区成员
63,203
社区内容
加载中
试试用AI创作助手写篇文章吧