| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2661 人关注过本帖
标题:请教怎样快速扫描局域网(C 语言版)
取消只看楼主 加入收藏
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
结帖率:98.63%
收藏
已结贴  问题点数:35 回复次数:6 
请教怎样快速扫描局域网(C 语言版)
早上网速慢就想ping 一下局域网256个地址里有几个是alive的

所以写了个脚本
程序代码:
#!/bin/bash

for i in `seq 255`
do
    ping -c 1 -W 1 192.168.1.$i
done


但这实在是慢, 发一个packet ,等一秒,对于256个地址来说时间太长了

于是发现fping 可以使用
$ fping -g 192.168.1.0/24

-g用来指定范围

于是快多了

再后来发现nmap 的 -sP 选项也可以使用,好像更快了
# nmap -sP 192.168.1.0/24

我想知道后面两个程序为什么能那么快的scan 256个地址??

求解释,欢迎思路, C代码, 链接


[ 本帖最后由 madfrogme 于 2012-8-19 17:18 编辑 ]
搜索更多相关主题的帖子: 局域网 快速 
2012-08-19 10:19
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
因为只是ping, 所以好像应该用raw ICMP socket

fping 应该是通过 round-robin 算法来发送数据的

查了一下wiki,

Round-robin (RR) is one of the simplest scheduling algorithms

for processes in an operating system.

As the term is generally used,

time slices are assigned to each process in equal portions and

in circular order, handling all processes without priority

应该就是指派时间,没有优先级

[ 本帖最后由 madfrogme 于 2012-8-19 12:29 编辑 ]

The quieter you become, the more you can hear
2012-08-19 11:17
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
以下是引用姻脂梦在2012-8-19 13:57:34的发言:

您就得瑟吧,批处理
这位朋友可能没弄清楚我想问的问题,

我明白扫描网络很简单,上面已经说了。连批处理都用不到,

nmap 一行命令,3秒钟就可以扫描完,而我的问题正是

一个程序是怎样并行的发送这些包的,使的这么快的扫描网络的

当然也欢迎吐槽

The quieter you become, the more you can hear
2012-08-19 13:10
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
回复 7楼 zklhp
试了一下,不过好像没成功

不过多开几个ping,我还真是被惊艳到了

谢谢

The quieter you become, the more you can hear
2012-08-19 15:41
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
回复 9楼 zklhp
我已经把-n 该成-c
把-w 该成-W了,
--

The quieter you become, the more you can hear
2012-08-19 16:28
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
以下是引用pangding在2012-8-22 02:53:22的发言:

像 11楼 那样,把它们放到后台慢慢 ping 去就行了,相当于是同时开了多个 ping。
没想过这个问题,感觉 ping 一般不是用来干这个的。另外那几个程序我也没研究过。学习了。

这里面应该有太多编程方面的细节要理解了,

感觉这个问题问的太早了,

可能自己都不知道这个问题能牵扯出多大一箩筐问题出来

比如用raw socket自己组装packet

怎样并行发送包之类吧

The quieter you become, the more you can hear
2012-08-22 07:22
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
以下是引用iFreeBSD在2012-8-23 00:43:54的发言:

这么个东西用C多累呀。
直接Perl



看看我写得这个Perl快不快,直接多线程解决并发。

大牛明白我想问什么,认真阅读代码,非常感谢

The quieter you become, the more you can hear
2012-08-23 06:41
快速回复:请教怎样快速扫描局域网(C 语言版)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015703 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved