在vb中使用Iphlpapi.dll获取网络信息 第二章 第九节 获取网卡–IP地址映射表

※==================================================================
※本连载文章说明:
※1、连载首发于《软件报》(http://www.sweek.com)2006年21期(2006年5月22日);
※2、此次网上连载采用的是原稿件结构,内容与《软件报》发表略有不同;
※3、谢绝除《软件报》及其相关刊物之外的传统媒体部分或全部转载;
※4、谢绝任何收费媒体、网络转载;
※5、原作者:uruseibest ,blog:http://blog.csdn.net/uruseibest
※6、如有其它疑问,请联系作者;
※7、如有转载,必须连同本说明一并发表,否则将追究转载者责任。
※======================================================================

第九节 获取网卡–IP地址映射表

1、函数:

Private Declare Function GetIpAddrTable Lib "iphlpapi.dll" (pIpAddrTable As MIB_IPADDRTABLE, pdwSize As Long, bOrder As Long) As Long

参数说明:

pIpAddrTable:[输出] 指向一个接收网卡–IP地址映射表的 MIB_IPADDRTABLE类型的指针。

pdwSize:[输入,输出]输入,指定pIpAddrTable 参数指向缓存的大小;输出,如果指定的缓存大小不够大,将设置此参数为必须的大小。

bOrder:[输入] 指定返回的映射表是否按照IP地址排列。TRUE,按顺序排列。

返回值:成功,返回0;失败,返回错误代码。

 

2、使用到的类型:

①MIB_IPADDRTABLE 包含IP地址入口表
Type MIB_IPADDRTABLE

    dwNumEntries As Long              '表明table字段数组中有多少MIB_IPADDROW条目

    table() As MIB_IPADDRROW      '指向MIB_IPADDRROW类型

End Type

②MIB_IPADDRROW 指定特殊IP地址的信息
Type MIB_IPADDRROW

    dwAddr As Long          '接口的IP地址

    dwIndex As Long     '与IP地址关联的接口之索引

    dwMask As Long         '子网掩码

    dwBCastAddr As Long   ’广播地址

    dwReasmSize As Long '已收到的数据报重装后的最大长度

    unused1 As Integer      '未使用

    unused2 As Integer      '未使用

End Type

 

3、使用到的常量:

 

4、主要代码分析:

①定义一个MIB_IPADDRTABLE类型的变量并获取此变量的大小,然后直接调用GetTcpTable:

Dim IpAddrTable As MIB_IPADDRTABLE

dwsize = Len(IpAddrTable)

r = GetIpAddrTable(IpAddrTable, dwsize, order)

②调用For…Next循环,获取每个网卡–IP地址映射的信息:

For i = 0 To IpAddrTable.dwNumEntries - 1

    Print "dwAddr", IpAddrTable.table(i).dwAddr

Next

③将长整型格式的ip地址转换为标准IP地址格式("xxx.xxx.xxx.xxx"格式):

Private Function inversaip(IPAddrLng As Long) As String

Dim sos As String

Dim i As Long

Dim IPadd As String

 

IPadd = Right("00000000" & Hex(IPAddrLng), 8)

sos = ""

For i = 1 To Len(IPadd) Step 2

    sos = CInt("&h" & Mid(IPadd, i, 2)) & "." & sos

Next i

inversaip = Mid(sos, 1, Len(sos) - 1)

End Function

 

5、运行时截图:

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/UruseiBest/archive/2006/12/20/1450378.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值