想用 socket 检测局域网中的 udp 端口开放状态,如何才能正确的判断端口是否开放?
1
305835227fadf 2018-11-29 17:44:05 +08:00
为什么要自己总爱造轮子? python 有 nmap 的库可用
|
2
javashell OP @305835227fadf nmap 感觉太慢
|
3
305835227fadf 2018-11-29 17:52:30 +08:00
@javashell 探测端口是网络 IO 密集型任务,如果你有多个探测目标这时候多线程是很好的解决方法,当然也有更高级的方案。
|
4
javashell OP @305835227fadf 求更高级的方案
|
5
305835227fadf 2018-11-29 17:59:23 +08:00
更高级的方案并不会给你的单次执行带来更大效率的提升( IO 开销无法避免),这种监控类的应用是性能无关的。其实对于一般的探测类应该用多线程的方式已经可以很好的解决你的问题了。不知道你的具体场景是什么?
|
6
javashell OP @305835227fadf 需要对局域网中几百台机器全端口扫描,查看是否有 udp 端口开放,开放则记录下来
|
7
305835227fadf 2018-11-29 18:07:42 +08:00
@javashell 首先你的这种需求很普通,普通到写个 shell 脚本调 system 命令也可以干,而且几百台机器真不多,也花费不了多长的时间,我还以为你全国上万节点周期性探测呢,放心你随便搞。
|
8
sigup 2018-11-29 18:12:07 +08:00
去看 ZMap 源码
With a 10gigE connection and PF_RING, ZMap can scan the IPv4 address space in under 5 minutes. |
9
ysc3839 2018-11-29 18:22:40 +08:00
UDP 端口没法检测是否开放吧?你发数据过去,对方可以不回复的。
|
10
ChrisTsai 2018-11-29 18:36:16 +08:00
UDP 端口也能检测?
|
13
mansurx 2018-11-29 19:22:39 +08:00 3
|
15
nanlou 2018-11-30 10:02:45 +08:00
icmp port unreachable
|
16
julyclyde 2018-11-30 10:40:32 +08:00
什么叫“开放”?你得先定义这个说法到底是什么意思
|