求 局域网在线 所有ip!

kangar123 2014-09-15 02:42:25
不用mac地址 只要ip地址,简单点的代码 获取速度快点的,不要太慢 谢谢
...全文
171 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
whatdoyousay 2014-09-18
  • 打赏
  • 举报
回复
引用 3 楼 caozhy 的回复:
请你给“在线”一个定义。 为什么慢?首先你要把或者这个ip的原理搞清楚。 我们没有任何一种协议可以知道局域网上存在哪些主机,除非dhcp服务器开放这种接口。我们能做的就是穷举,不但要穷举所有的ip,而且我们要穷举各种常见的端口,尝试建立连接,如果有反应就视作“在线”。 换言之,除了dhcp,如果一台主机明明联网,拥有一个分配的ip,但是它不响应任何端口的请求,你无法判断它是否在线。另外,我们必须给接收响应一个时间范围。如果目标主机收到请求10秒钟才返回,那么在10秒钟以前,你不能确认它是否在线。 原理搞清楚了,就能理解“慢”是什么原因了。慢的原因有两个,一个是超时时间过大,使得无效的请求需要足够长的时间才确认它的确没有响应,另一个是尝试足够多的端口,这样判断更准确。 因此你完全可以让它“快”,只要按照我分析的,将timeout调小,以及尝试访问更少的端口——但是快会导致准确性的下降,这是不能避免的,所谓快慢,你必须做出一个权衡。
专业
whatdoyousay 2014-09-18
  • 打赏
  • 举报
回复
引用 2 楼 diaodiaop 的回复:
查看自己的IP..比如192.168.1.156 那么你就弄个线程池(大小255) ping 1.1到1.255 如果有返回添加到集合否则跳过...
这个方法应该不行,因为同一局域网的机器,就算你ping你也有ping不通的。网络设置或者路由器的原因都有。
threenewbee 2014-09-17
  • 打赏
  • 举报
回复
请你给“在线”一个定义。 为什么慢?首先你要把或者这个ip的原理搞清楚。 我们没有任何一种协议可以知道局域网上存在哪些主机,除非dhcp服务器开放这种接口。我们能做的就是穷举,不但要穷举所有的ip,而且我们要穷举各种常见的端口,尝试建立连接,如果有反应就视作“在线”。 换言之,除了dhcp,如果一台主机明明联网,拥有一个分配的ip,但是它不响应任何端口的请求,你无法判断它是否在线。另外,我们必须给接收响应一个时间范围。如果目标主机收到请求10秒钟才返回,那么在10秒钟以前,你不能确认它是否在线。 原理搞清楚了,就能理解“慢”是什么原因了。慢的原因有两个,一个是超时时间过大,使得无效的请求需要足够长的时间才确认它的确没有响应,另一个是尝试足够多的端口,这样判断更准确。 因此你完全可以让它“快”,只要按照我分析的,将timeout调小,以及尝试访问更少的端口——但是快会导致准确性的下降,这是不能避免的,所谓快慢,你必须做出一个权衡。
by_封爱 2014-09-15
  • 打赏
  • 举报
回复
查看自己的IP..比如192.168.1.156 那么你就弄个线程池(大小255) ping 1.1到1.255 如果有返回添加到集合否则跳过...
zbdzjx 2014-09-15
  • 打赏
  • 举报
回复
用多线程去PING??? 之前好像听说可以这样做。

7,765

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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