805333 发表于 2009-11-15 23:37:12

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

本帖最后由 805333 于 2009-11-19 03:08 编辑

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

bing614 发表于 2009-11-16 10:31:05

发包率 怎么得到? 是不是netstat -e ?

805333 发表于 2009-11-17 01:30:44

意思就是检测当前网卡每秒钟发出去多少个包,即每秒上传多少个包!

bing614 发表于 2009-11-17 11:52:59

那就是就是流量???论坛有,找找。

pusofalse 发表于 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 = ""
        $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?mod=viewthread&tid=10543&highlight=

zmj2008 发表于 2010-3-14 06:26:19

似懂非懂的在看看

menfan1 发表于 2010-3-14 12:18:37

呵呵,学习一下。。

vgy0dl 发表于 2011-3-11 07:45:02

好东西,留个记号
页: [1]
查看完整版本: 如何通过调用Iphlpapi.dll 的API获得本机的发包率!