张智慧
摘 要:网络通阻是网络运行状态的重要指标之一,常见的网络管理软件过于复杂,而系统自带的ping工具又无法进行检测数据的统计。该文在分析ICMP协议的基础上,利用VC编程环境中的网络通信、多线程编程技术,采用模块化设计开发方法,实现了网络节点状态的动态监测。通过调用网络监测模块,完善节点管理、指标分析和界面显示等功能,完成对多个节点的网络监测和故障统计应用,已经用于某单位重要网络节点的监控管理,系统占用系统资源少、运行稳定。
关键词:VC编程 多线程 模块化设计 网络监测
中图分类号:TP319 文献标识码:A 文章编号:1672-3791(2015)02(a)-0022-02
Abstract: Network resistance is one of the important indexes of running state of network. Most network management software is too large and complex, and the Ping tool is unable to analysis the testing data. In this paper, based on the ICMP protocol, one network monitoring tool is developed under VC, by using the network communication and multi thread programming technology, modular design method is adopted, the network node state can be dynamic monitored. By improved the node management, testing data analysis and interface display function, the program has been used to monitor the nodes of a network, occupying less system resources, and running stably.
Key Words: VC programming, Multi thread, Modular design, Network monitoring
尽管存在各式各样的网络工具,但ping还是人们最常用的检测工具,可以简单、有效的掌握网络运行状态,遗憾的是无法进行检测数据的统计分析。利用VC强大的网络通信、多线程开发资源,只需集成调用相应的功能,就可以实现类似ping的网络状态在线监测和数据分析。在软件的开发过程中,充分利用已有的成熟开发资源,构建针对性的应用模块,不仅可以提高开发效率,还可以提高软件的质量。该文首先分析了核心网络监测功能模块的设计和开发,结合网络运行维护中需要实时在线监测关键节点状态的需求,给出一个完整网络管理应用系统解决方案,能够实现上级节点对下级节点的网络运行状态的监控、故障统计和分析等功能。
1 监测功能模块实现
1.1 功能模块设计
ping实际上采用的是ICMP协议。ICMP协议是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。Windows提供了ICMP.dll,可以在VC中调用,但不具备移植性,而且很难对网络数据包进行控制。所以采用VC提供套接字(socket)进行网络编程,选择和ping程序一样发送32字节的数据包,获取返回数据包大小和TTL值,需要在工程中包含afxsock.h库文件。
编程流程及系统调用时序如图1所示。
1.2 网络状态检测
1.2.1 创建套接字
1.2.2 发送ICMP数据包
1.2.3 检测套接字状态
1.2.4 读取响应数据,判断状态
在响应数据包内,包含了该次检测响应结果的TTL。至此,实现了同ping方式一样的网络检测。
1.3 多线程监测
网络状态检测模块只需要获取目标IP地址数据,并不需要用户界面交互,因此创建单独的线程定时运行实现在线网络状态监测,实现后台运行。
创建互斥事件对象,用于设定网络检测模块的工作状态。
2 动态节点监测应用案例
在网络监测功能的基础上,通过适当的人机交互界面和配置数据管理,就可以构建一个完整的网络管理应用系统。
2.1 系统功能组成
系统功能由网络检测、状态显示、节点管理、指标分析等四部分组成,分别完成网络节点通阻状态的存储、检测、分析和显示。状态显示又分为客户端图形模式和动态网页模式,客户端图形模式采用C/S架构,可以对系统检测周期和节点属性等参数进行配置,查看节点状态,完成数据分析,录入故障原因等;浏览器网页模式主要用于查看节点状态和指标分析数据。如图2所示。
2.2 检测流程
系统根据设定的检测间隔和节点是否检测,形成检测节点列表,启动检测流程。检测流程如图3所示。
系统运行界面如图4所示。
3 结语
通过利用VC开发环境提供的网络、多线程类库和函数,实现了网络状态监测模块的开发,并以此为基础构建了一个简单的网络管理应用系统。由此可见,软件的模块化开发,一是要充分利用已有的开发平台资源,提高软件开发效率;二是要合理划分模块,优先实现关键模块功能,提高开发的针对性。
参考文献
[1] 赵立群,吴霞,孙岩.计算机网络管理与安全[M].2版.北京:清华大学出版社,2014.
[2] 罗莉琴,詹祖桥,黄辉,等.Windows网络编程[M].北京:人民邮电出版社,2011.
[3] 潘磊,裴斐.一种面向大规模网络拓扑发现的研究[J].计算机工程与应用,2010,46(19):74-76.
[4] DAVID.VISUAL C++6编程宝典[M].北京:电子工业出版社,2005.