我是靠谱客的博主 长情樱桃,最近开发中收集的这篇文章主要介绍局域网探测器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

局域网探测器可以探测子网中包含的设备和计算机,并获取计算机的基本信息,检测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"

最后

以上就是长情樱桃为你收集整理的局域网探测器的全部内容,希望文章能够帮你解决局域网探测器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部