找回密码
 加入
搜索
查看: 2778|回复: 7

如何通过调用Iphlpapi.dll 的API获得本机的发包率!

  [复制链接]
发表于 2009-11-15 23:37:12 | 显示全部楼层 |阅读模式
本帖最后由 805333 于 2009-11-19 03:08 编辑

如何通过调用Iphlpapi.dll 的API获得本机的发包率!
发表于 2009-11-16 10:31:05 | 显示全部楼层
发包率 怎么得到? 是不是netstat -e ?
 楼主| 发表于 2009-11-17 01:30:44 | 显示全部楼层
意思就是检测当前网卡每秒钟发出去多少个包,即每秒上传多少个包!
发表于 2009-11-17 11:52:59 | 显示全部楼层
那就是就是流量???论坛有,找找。
发表于 2009-11-17 19:05:58 | 显示全部楼层
#include <SetupApi.au3>

Const $GUID_NDIS_LAN_CLASS = "{AD498944-762F-11D0-8DCB-00C04FC3358C}"

Local $hDevs, $tDevIfInfo, $tDevInfo, $sDescr, $sName, $sText
Local $iMask, $iIFIndex, $sDevicePath, $hDevice, $tBuffer, $pBuffer

$iMask = bitOR($DIGCF_PRESENT, $DIGCF_DEVICEINTERFACE)
$hDevs = _SetupDiGetClassDevs($iMask, $GUID_NDIS_LAN_CLASS)
$iMask = bitOR($GENERIC_READ, $GENERIC_WRITE)
$tBuffer = DllStructCreate("dword OID;dword PacketsSent")
$pBuffer = DllStructGetPtr($tBuffer)
DllStructSetData($tBuffer, "OID", 0x20101)

While _SetupDiEnumDeviceInterfaces($hDevs, 0, $GUID_NDIS_LAN_CLASS, $iIfIndex, $tDevIfInfo)
        $iIFIndex += 1
        $sDevicePath = _SetupDiGetDeviceInterfaceDetail($hDevs, $tDevIfInfo, $tDevInfo)
        $sDescr = _SetupDiGetDeviceRegistryProperty($hDevs, $tDevInfo, 0)
        $sName = _SetupDiGetDeviceRegistryProperty($hDevs, $tDevInfo, 0xC)
        If $sName <> "" Then $sDescr = $sName
        If $sDescr = "" Then $sDescr = "[Unknown device]"
        $hDevice = _CM_Create_File($sDevicePath, $iMask, 3, 0, 3, 0)
        If Number($hDevice) < 1 Then ContinueLoop
        _CM_Device_IO_Control($hDevice, 0x170002, $pBuffer, 4, $pBuffer + 4, 4)
        _CM_Close_Handle($hDevice)
        $sText &= "Device: " & $sDescr & @CRLF & "Packets sent: "
        $sText &= DllStructGetData($tBuffer, "PacketsSent") & @CRLF & @CRLF
WEnd
_SetupDiDestroyDeviceInfoList($hDevs)
Msgbox(0, "", $sText)
感谢楼主提供的技术信息。以上代码可以检测本地网卡数据包发送的数量。
要获取每秒的发包率只需再套一个While循环,当前秒值发送的数据包数量减去上一秒的数据包数量就OK。
SetupApi.au3 - 11/17/2009 更新 - http://www.autoitx.com/forum.php ... 0543&highlight=

评分

参与人数 1金钱 +30 贡献 +20 收起 理由
afan + 30 + 20 老师就是强~!

查看全部评分

发表于 2010-3-14 06:26:19 | 显示全部楼层
似懂非懂的  在看看
发表于 2010-3-14 12:18:37 | 显示全部楼层
呵呵,学习一下。。
发表于 2011-3-11 07:45:02 | 显示全部楼层
好东西,留个记号
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-2 12:22 , Processed in 0.076782 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表