SCANNER简单网络扫描程序C语言多线程实现

该博客介绍了如何使用C语言在Linux环境下编写一个简单的网络扫描程序,用于扫描局域网内的主机。程序涉及多线程技术,通过TranAddr函数生成IP地址列表,sockconnect函数尝试连接目标主机的端口。在实验过程中遇到了'Too many open files'和gethostbyaddr函数无法获取主机名的问题,分别通过调整系统限制和检查DNS设置进行解决。实验加深了对socket编程、多线程和网络扫描的理解。
摘要由CSDN通过智能技术生成
  • 实验内容

用C语言编写一个在linux下扫描局域网内主机的程序。要求可以显示局域网内的主机名列表,IP地址列表,并可以显示哪些主机开放了哪些端口

  • 实验环境

VMware Ubuntu18虚拟机

  • 实验内容及步骤

1、程序流程图:

 2、主要函数说明:

(1)void TranAddr(char *ad)

输入一个地址,输出其局域网内的前n个地址,到address结构体中。

首先删除IP地址第三位小数点后面的字符,然后使用TranNum(将整型变量转换为字符串)和strcat函数将输入IP地址的子网的前Number_of_LAN个IP地址储存到addr[Number_of_LAN][Number_of_ports]二维结构体数组中,再使用inet_pton函数转换IP地址为二进制,最后使用gethostbyaddr函数查询IP地址对应的主机名并储存到二维结构体数组之中。

(2)void  sockconnect(struct Address *b)

输入一个Address结构体,读取IP地址和端口信息,使用connect函数尝试连接对应主机的端口,并将连接结果储存到结构体之中。

(3ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灰原Anita_Hailey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值