linux下端口扫描的实现(TCP connect、TCP SYN、TCP FIN、UDP四种方式)3 TCP connect方式

1.原理

        前面原理篇有讲过,开放的TCP端口会等待客户端connect自己,所以我的客户端程序connect目标端口,根据返回值得不同判断对方是否开放了监听端口(connec()返回-1说明连接失败,则端口关闭;否则,成功,说明端口开放),扫面时间会比其他方式长,因为对于失败的端口不止connect一次。

2.实现方式及遇到的的问题

        前面架构篇有讲过,每个扫描线程(tcpConScanPort)会建立一个线程池,对每个要扫描的端口都创建一个线程tcpConScanEach(线程配置成detach属性)。tcpConScanEach负责connect各自的端口,将结果存在全局的一个链表中。

(1)参数传递

        这里需要给每个端口扫描线程传递的参数包括目的ip和端口,在主端口扫面线程中,我为每一个要扫描的端口动态分配一个sockaddr_in类型的空间,将指向该空间的指针传向每一个子线程,子线程connect完成后释放这个空间。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值