用Win32 API监控网络流量的方法(转)

最近想做个网络流量统计的小工具,找到一些方案。

转自:http://hi.baidu.com/gyan_katsura/item/e2e82430e15d71d51b96968e


毕设要做计算机系统数据采集监控方面的,其中有一项是监控系统上的各个网络适配器上的流量。

简单调研了一下,结果如下:

1.首先要用到的头文件和库:iphlpapi.h和iphlpapi.lib

2.直接体现网络流量的变量在MIB_IFROW结构体里,下载量保存在dwInOctets成员,上传量保存在dwOutOctets。结构体还有很多其他有用才成员变量,比如收到的Unicode包的数量等等。

3.获取网络流量,就要填充这个结构体MIB_IFROW,用到的函数是GetIfEntry(*MIB_IFROW),参数是指向MIB_IFROW结构体的指针。这个函数的用法是:首先要知道要监控的网络适配器的索引值(如何获得这个值等下再说),然后把这个值先赋给MIB_IFROW结构体的dwIndex, 然后再调用GetIfEntry进行填充,这是填充的信息就是dwIndex 对应的适配器的各种信息。

4.获得网络适配器索引值的方法:调研到两种方法,一种是用GetAdaptersInfo函数,我用的就是这种方法,这个函数用来填充一个IP_ADAPTER_INFO的结构体,不过不只填充一个,会形成一个链表结构,计算机系统上的每个网络适配器包括有线或无线的各种网卡对应一个节点,节点的Index的成员就是该网卡对应的索引值,网卡的描述可以在结构体的Describe成员中得到。用这个方法要注意第二个参数SizePointer,如果指向的值大小不足的话,函数不会填充IP_ADAPTER_INFO结构体,只是把SizePointer指向的整数值填充为所需的最小最小值,具体是多少不用管他,然后会返回ERROR_BUFFER_OVERFLOW。然后再调用一次这个函数,调用的参数和上次调用一样,这回才可以真正地填充IP_ADAPTER_INFO,所以一般要获取要用的信息这个函数要调用两次。还要注意一点,如果要再次IP_ADAPTER_INFO的话一定要把之前的链表free掉,否则会内存泄漏,这个不是由自己手动new或malloc或heapalloc出来的内存,比较容易忽略。

还有一种方法是GetIfTable函数,我没用这个方法,不知道咋用,有兴趣的自己调研一下吧^_^

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Win32网络API是一组用于在Windows操作系统上进行网络编程的应用程序编程接口(API)。它提供了一系列函数和数据结构,用于实现网络通信、数据传输、网络协议处理等相关功能。 通过使用Win32网络API,开发人员可以创建客户端和服务器应用程序,实现网络套接字的创建、连接建立、数据发送和接收等操作。这些API还支持TCP/IP和UDP/IP等常见的网络协议,如HTTP、FTP等,使得程序能够与Internet上的其他计算机进行通信。 Win32网络API提供了一系列功能强大的函数,如socket函数用于创建套接字,bind函数用于绑定端口,listen函数用于监听连接请求等。它还提供了一些高级功能,如多线程编程支持,使得程序能够同时处理多个网络连接,并实现并发通信。 使用Win32网络API可以实现各种类型的网络应用程序,如网络游戏、实时聊天应用、网络文件传输等。开发人员可以根据具体需求选择适合的网络协议和API函数,以实现所需的功能。 总之,Win32网络API为Windows开发人员提供了强大而丰富的网络编程功能,使他们能够轻松地实现各种网络应用程序,并与其他计算机进行数据交换。 ### 回答2: Win32网络API是一组用于Windows操作系统的应用程序编程接口,它允许开发人员创建网络应用程序和实现与网络通信相关的功能。这些API包括各种网络协议的实现、套接字编程、网络管理和监控等功能。 Win32网络API提供了丰富的功能,例如创建和绑定套接字、监听和接受连接、发送和接收数据等。开发人员可以利用这些API创建网络应用程序,如网络游戏、聊天软件、文件传输工具等。 通过Win32网络API,开发人员可以实现各种网络协议,如TCP/IP、UDP、HTTP等。其提供了一系列的函数和结构体,用于创建和管理网络连接、发送和接收数据包、处理网络错误等。 另外,Win32网络API还提供了网络管理和监控的功能。开发人员可以使用这些API查询和配置网络接口、获取网络状态、监控网络流量等。这些功能使得开发人员可以更好地管理和维护网络应用程序。 总之,Win32网络API是一套强大而全面的工具,用于在Windows操作系统上开发网络应用程序。它提供了丰富的功能,使得开发人员能够实现各种网络通信和管理的需求。无论是开发个人应用还是企业级应用,Win32网络API都能够提供支持和便利。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

iot-genius

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

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

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

打赏作者

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

抵扣说明:

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

余额充值