局域网探测器

一、局域网探测器的主要功能

局域网探测器可以探测子网中包含的设备和计算机,并获取计算机的基本信息,检测IP地址的在线状态。探测器由以下5个功能模块组成:获取本地网络信息、子网管理、子网扫描、获取子网中计算机的基本信息、检测设备的在线状态。

1、基础模块

1、设计设备信息类CDevice,类里定义的成员变量用于保存ip地址对应主机的信息,包括ip地址、名称、Mac地址、工作组、在线状态。

2、设计本地主机类Localhost,用于获取本地网卡的信息。定义结构体AdapterInfo,在里面定义IP地址、子网掩码、MAC地址、网卡名称等变量,然后定义了一个集合adapterlist

定义了方法GetLocalAdapterInfo()用于获取本地计算机的网络适配器信息,并将其保存到adapterlist中

3、

3.1 设计子网类CSubnet,保存子网的基本数据和操作(对子网进行扫描)。

通过GetLocalAdapterInfo()获取子网的一个IP地址,再和子网掩码计算出该子网的网络地址和广播地址。

子网中所有有效地址都在网络地址和广播地址之间,将所有IP地址转换为字符串,并添加到DeviceList列表中。

Csubnet的带参构造中,实现将网络地址netaddr从网络字节顺序转换为主机字节顺序,并求得网络地址。

函数FillDevice():子网的网络地址NetAddr和子网掩码NetMask按位与,计算子网中包含的所有IP。

进行子网扫描(ping操作)用到的函数:

基于icmp协议,对之前获取到的所有IP地址执行ping操作,记录有回应的IP地址。

目的就是检测指定IP地址的在线状态。

3.2

还需要获取的有子网中计算机的名称、MAC地址和工作组信息

使用GetHostInfo()函数获取NetBIOS信息,保存到ips映射表项中的CDevice对象中,最后遍历ips中的元素输出。

二、系统主界面设计

  1. 系统主界面中的控件:

树视图控件,用于显示子网列表

列表控件,以列表方式显示子网中发现的在线设备

编辑框控件,显示加载和扫描子网的过程。

2、菜单项:

主菜单,在界面左上角。

快捷菜单,对子网右键单击时弹出。

3、打开程序,初始化视图控件,运行OnInitDialog()

在CLocalhost中获取的网络信息全部添加到树视图控件并输出。

4、管理子网:

4.1、设计CSubnetEditDlg,对子网的编辑的提示信息对话框

添加子网用到函数OnAddSubnet()

修改子网用到函数OnEditSubnet()

添加和修改都是用同样的对话框。

删除子网用到的函数:OnDelSubnet()

5、扫描指定的子网:

设计CScanSubnetDlg,扫描子网时的对话框

使用线程函数ScanSubnet()扫描子网

6、检测子网的状态

在列表中显示其在线状态信息,用的还是之前的ping操作

三、可能存在的问题

1、列表控件里的名称、Mac地址、工作组不显示,可能原因:

猜测:

  1. 数据为空

  1. 未存进ips映射表项中

  1. 远端主机没有共享资源或者安装有防火墙,137、138、139等端口被关闭。

原因:udp137、138端口均被禁用了。

137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务。

138端口的主要作用就是提供NetBIOS环境下的计算机名浏览功能。

在命令提示符里输入netstat -an | findstr "137 138 139"

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值