WIN API-VFP获取网络信息、流量等

*--VFP调用API:使用Iphlpapi.dll获取网络信息、网络流量(即发送字节和接收字节)等。
*--效果等同于DOS命令netstat -e

Clear
#Define
ERROR_INSUFFICIENT_BUFFER 122
Declare Integer GetIfTable In iphlpapi String @pIfTable,Long @pdwSize,Long
Border
Declare String
inet_ntoa In wsock32 Long
inn
m.pIfTable=''
m.pdwSize=0
m.iResult=GetIfTable(@m.pIfTable,@m.pdwSize,1)
If
(m.iResult<>ERROR_INSUFFICIENT_BUFFER)
    ?'错误,Windows 错误代码:',m.iResult
   
Return
Endif
m.pIfTable=Replicate(Chr
(0),m.pdwSize)
m.iResult=GetIfTable(@m.pIfTable,@m.pdwSize,1)
If
(m.iResult<>0)
    ?'错误,Windows 错误代码:',m.iResult
   
Return
Endif
lnCount=CToBin(Left(m.pIfTable,4),'rs')    
&&网络连接总数
m.pIfTable=Substr
(m.pIfTable,5)
lnReceived=0
lnSent=0
For I=1 To
lnCount
    lcMIB_IFROW=
Substr(m.pIfTable
,(I-1)*860+1,860)
   
*lcWszName=LEFT(lcMIB_IFROW,512)
    lnIndex=CToBin(Substr
(lcMIB_IFROW,513,4),'rs')
    lcType=MyGetType(
CToBin(Substr
(lcMIB_IFROW,517,4),'rs'))
    lnMtu=
CToBin(Substr
(lcMIB_IFROW,521,4),'rs')
    lnSpeed=
CToBin(Substr
(lcMIB_IFROW,525,4),'rs')
    lnPhysAddrLen=
CToBin(Substr
(lcMIB_IFROW,529,4),'rs')
    lcPhysAddr=
Substr
(lcMIB_IFROW,533,8)
    lcMacAddr = ''
   
For ii=1 To
lnPhysAddrLen
        lcMacAddr=lcMacAddr+
Iif(ii>1,'-','')+Right(Transform(Asc(Substr
(lcPhysAddr,ii,1)),'@0'),2)
   
Endfor
   
lnAdminStatus=CToBin(Substr
(lcMIB_IFROW,541,4),'rs')
    lnOperStatus=MyGetState(
CToBin(Substr
(lcMIB_IFROW,545,4),'rs'))
    lnLastChange=
CToBin(Substr
(lcMIB_IFROW,549,4),'rs')
    lnInOctets=
CToBin(Substr
(lcMIB_IFROW,553,4),'rs')
    lnInUcastPkts=
CToBin(Substr
(lcMIB_IFROW,557,4),'rs')
    lnInNUcastPkts=
CToBin(Substr
(lcMIB_IFROW,561,4),'rs')
    lnInDiscards=
CToBin(Substr
(lcMIB_IFROW,565,4),'rs')
    lnInErrors=
CToBin(Substr
(lcMIB_IFROW,569,4),'rs')
    lnInUnknownProtos=
CToBin(Substr
(lcMIB_IFROW,573,4),'rs')
    lnOutOctets=
CToBin(Substr
(lcMIB_IFROW,577,4),'rs')
    lnOutUcastPkts=
CToBin(Substr
(lcMIB_IFROW,581,4),'rs')
    lnOutNUcastPkts=
CToBin(Substr
(lcMIB_IFROW,585,4),'rs')
    lnOutDiscards=
CToBin(Substr
(lcMIB_IFROW,589,4),'rs')
    lnOutErrors=
CToBin(Substr
(lcMIB_IFROW,593,4),'rs')
    lnOutQLen=
CToBin(Substr
(lcMIB_IFROW,597,4),'rs')
    lnDescrLen=
CToBin(Substr
(lcMIB_IFROW,601,4),'rs')
    lnDescr=
Substr
(lcMIB_IFROW,605,256)
    lnReceived=lnReceived+lnInOctets
    lnSent=lnSent+lnOutOctets
    ?'lnIndex',lnIndex                    
&&接口编号
   
?'lcType',lcType                      
&&接口类型
   
?'lnMtu',lnMtu
                        &&最大传输单元
   
?'lnSpeed',lnSpeed                    
&&接口速度(字节)
   
?'lnPhysAddrLen',lnPhysAddrLen
        &&由bPhysAddr获得的物理地址有效长度
   
?'lcMacAddr',lcMacAddr                
&&物理地址
   
?'lnAdminStatus',lnAdminStatus
        &&接口管理状态
   
?'lnOperStatus',lnOperStatus          
&&操作状态
   
?'lnLastChange',lnLastChange
          &&操作状态最后改变的时间
   
?'lnInOctets',lnInOctets
              &&总共收到(字节)
   
?'lnInUcastPkts',lnInUcastPkts        
&&总共收到(unicast包)
   
?'lnInNUcastPkts',lnInNUcastPkts
      &&总共收到(non-unicast包),包括广播包和多点传送包
   
?'lnInDiscards',lnInDiscards
          &&收到后丢弃包总数(即使没有错误)
   
?'lnInErrors',lnInErrors              
&&收到出错包总数
   
?'lnInUnknownProtos',lnInUnknownProtos
&&收到后因协议不明而丢弃的包总数
   
?'lnOutOctets',lnOutOctets            
&&总共发送(字节)
   
?'lnOutUcastPkts',lnOutUcastPkts      
&&总共发送(unicast包)
   
?'lnOutNUcastPkts',lnOutNUcastPkts
    &&总共发送(non-unicast包),包括广播包和多点传送包
   
?'lnOutDiscards',lnOutDiscards
        &&发送丢弃包总数(即使没有错误)
   
?'lnOutErrors',lnOutErrors            
&&发送出错包总数
   
?'lnOutQLen',lnOutQLen
                &&发送队列长度
   
?'lnDescrLen',lnDescrLen
              &&bDescr部分有效长度
   
?'lnDescr',lnDescr                    
&&接口描述
Endfor
?'-------------------------'
?'Received:'+
Transform
(lnReceived)
?' Sent:'+
Transform
(lnSent)
?'-------------------------'
Clear Dlls


Function
MyGetType     &&“接口类型”定义函数
    Parameters
tnType
   
Do Case
        Case
tnType=1
            lcType="Other"
       
Case
tnType=6
            lcType="Ethernet"
       
Case
tnType=9
            lcType="Tokenring"
       
Case
tnType=15
            lcType="FDDI"
       
Case
tnType=23
            lcType="PPP"
       
Case
tnType=24
            lcType="Loopback"
       
Case
tnType=28
            lcType="Loopback"
       
Otherwise
       
    lcType="UNKNOW"
   
Endcase
    Return
lcType
Endfunc


Function
MyGetState     &&“操作状态”定义函数
    Parameters
tnState
   
Do Case
        Case
tnState=0
            lcState="Not operational"
       
Case
tnState=1
            lcState="Operational"
        Case
tnState=2
            lcState="Disconnected"
       
Case
tnState=3
            lcState="Connecting"
        Case
tnState=4
            lcState="Connected"
       
Case
tnState=5
            lcState="Unreachable"
       
Otherwise
           
lcState="UNKNOW"
   
Endcase
    Return
lcState
Endfunc

### 回答1: arm-linux-gcc-4.5.1-v6-vfp-20120301.rar是一个文件,文件名中包含了一些数字和字母,这些数字和字母表示了一些信息。该文件是arm架构的Linux操作系统下使用的gcc编译器,具体版本为4.5.1,支持armv6指令集和vfp浮点数指令集,发布时间为2012年3月1日。 gcc编译器是一个开放源代码的编译器,它可以生成在不同平台(如arm、x86等)上运行的程序。arm架构是一种广泛使用于移动设备和嵌入式系统中的微处理器架构,armv6是其中一种指令集,vfp是浮点指令集。 该编译器可以用于开发各种arm架构下的应用程序,比如嵌入式系统、智能手机、平板电脑等。它可以将C、C++、Objective-C等高级语言编写的源代码编译成arm架构下的可执行文件。使用该编译器进行开发可以提高程序的稳定性和性能,并节省开发成本和时间。 总之,arm-linux-gcc-4.5.1-v6-vfp-20120301.rar是一个在arm架构下使用的gcc编译器,可以用于开发各种类型的应用程序,具有较高的稳定性和性能。 ### 回答2: arm-linux-gcc-4.5.1-v6-vfp-20120301.rar 是一个Linux操作系统下的ARM架构编译器,其版本号为4.5.1,支持v6和vfp指令集,在2012年3月1日发布。这个编译器可以在Linux环境下编译ARM架构的代码,并支持v6和vfp指令集,可以有效地提高代码的运行效率和性能。常见的应用场景包括嵌入式系统、移动设备以及无线网络等领域。此外,这个编译器还提供了一些工具,例如汇编器、链接器、调试器等,可以帮助开发者进行代码编译、调试以及优化等工作。总之,arm-linux-gcc-4.5.1-v6-vfp-20120301.rar是一个重要的开发工具,对于ARM架构的应用程序开发具有重要意义。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值