Visual C++作为一种程序设计语言,它同时也是一个集成开发工具,提供了软件代码自动生成和可视化的资源编辑功能。在使用Visual C++开发应用程序的过程中,系统为我们生成了大量的各种类型的文件。
Developer Studio 是整个Visual C++的核心部分,它是一个集成的开发环境,提供了整套的编程开发工具。Developer Studio 主要工具及其功能如下表10所示:
表 10 功能
工具 功能
项目管理器 建立项目源文件,进行项目管理
文本编辑器 添加、修改、删除程序源代码
资源编辑器 编辑程序资源包括菜单、图标和对话框、库等
编程辅助工具(AppWizard和ClassWizard) 用来协助用户定义C++的各种类,帮助开发者生成应用程序的基本框架,还可以处理Windows消息等任务。
开发人员还可以的开发的工作空间对应用程序进行创建、运行、调试等操作,Developer Studio 会自动运行优化编译器、链接器或者其他工具,也就方便了再Developer Studio中诊断和调试应用程序(Debug),发现并解决问题。利用ClassView可以方便的找到需要查找的类和程序符号。此外,在Developer Studio中可以方便的阅读Visual C++的联机文档和几乎全部的帮助文档(如MFC类库帮助,Win32SDK等)。
本网络流量监控系统的设计开发平台采用Microsoft Visualstudio6.0,它是目前使用比较广泛的Winsock开发平台,通过微软的技术人员对此平台多年的研究与更新,此平台发展成为了现代较为成熟的Winsock开发平台,具有较强的适应性,拥有强大的可移植性,能够运行于对种类的操作系统上并且兼容,设计出相关程序后具有直观的简洁的操作界面,相对稳定性也比较高,适合上手学习的人事同样也满足深度技术人员的研究与开发。
2.2 IP Helper API
IP Helper 是一套用于管理本地网络设置的API。使用这一套API可以方便的改变计算机的网络设置或者提取有关的信息。而且它还提供了一种消息机制,能够在本地计算机的网络设置发生改变时通知应用程序。实际上,它不仅仅能够提取本机的网络设置信息,还能够获得网络上其它计算机的IP使用情况和MAC地址。
IP Helper的一个重要作用就是提取本地网卡的接口信息,而是实现这个功能,就不得不提到两个函数是GetNumberOfInterfaces和GetInterfaceInfo。
GetNumberOfInterfaces()函数 用于给出网络接口的个数,GetInterfaceInfo()用于提取网络接口的信息。
对于第一个函数,依据MSDN中的描述:一个网络接口是网卡的逻辑抽象,它们是一对一的关系,实际的网卡在计算机中要有一个虚拟的网络接口与其对应,来实现逻辑功能。实际上,我们都知道每个系统都附加有一个不与外网连接的网络接口,这个接口的IP地址是127.0.0.1子网掩码是255.0.0.0。由GetInterfaceInfo返回的IP_INTERFACE_INFO结构中也有一个NumAdapters整型的数据域记录了正确的网卡。然后对于第二个函数,要注意的是它必须被调用两次,第一次获取缓冲大小,第二次才是取值。
IP Helper也包括很多其他函数,它们能够查看或者设置有关网络数据报文的信息。如,使用SetIpStatistics 函数,可以用来设置相应的IP协议栈属性,增加或者减少IP数据报的缺省TTL值。GetIpStatistics、GetIcmpStatistics函数能够查看当前IP数据报和ICMP数据报的流量,以及废弃的数据报数量等,它们也可以用于构建网络监控程序,检查网络中的故障。可以用GetBestRoute、 GetBestInterface获得到达指定IP的最好的路由点和网络接口。使用GetIpForwardTable、CreateIpForwardEntry 、DeleteIpForwardEntry、SetIpForwardEntry来分别获取IP路由表的信息,创建路由表项,删除路由表项和修改路由表项。