在vb中使用Iphlpapi.dll获取网络信息 第二章 第十节 获取本机已探测的IP – 物理地址映射表
来源:互联网 发布:淘宝的nmd都是真货吗 编辑:程序博客网 时间:2024/06/01 10:02
※==================================================================
※本连载文章说明:
※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 GetIpNetTable Lib "iphlpapi.dll" (pIpNetTable As MIB_IPNETTABLE, pdwSize As Long, bOrder As Long) As Long
参数说明:
pIpNetTable:[输出]指向一个返回IP至物理地址映射作为MIB_IPNETTABLE类型的缓存。
pdwSize:[输入,输出] 输入,指定pIpNetTable参数指向缓存的大小;输出,如果指定的缓存大小不够大,将设置此参数为必须的大小。
bOrder:[输入] 指定返回的映射表是否按照IP地址排列。TRUE,按序排列。
返回值:成功,返回0;失败,返回错误代码。
2、使用到的类型:
①MIB_IPNETTABLE 包含地址解析协议(ARP :Address Resolution Protocol)接口入口表。
Type MIB_IPNETTABLE
DwNumEntries As Long ‘当前包含MIB_IPNETROW类型的总数
MIB_Table() As MIB_IPNETROW ‘指向一个包含MIB_IPNETROW类型的指针
End Type
②MIB_IPNETROW 包含地址解析协议(ARP :Address Resolution Protocol)接口信息:
Type MIB_IPNETROW
dwIndex As Long '指定适配器的索引
dwPhysAddrLen As Long 'bPhysAddrs字段内包含的物理接口的长度(字节),通常为6
bPhysAddr(MAXLEN_PHYSADDR) As Byte '字节数组,包含适配器的物理地址
dwAddr As Long 'IP地址
dwType As Long 'ARP接口的类型,以下值之一:
常量名称
值
说明
MIB_IPNET_TYPE_OTHER
1
其他条目
MIB_IPNET_TYPE_INVALID
2
无效条目
MIB_IPNET_TYPE_DYNAMIC
3
动态条目
MIB_IPNET_TYPE_STATIC
4
静态条目
End Type
3、使用到的常量:
Const MAXLEN_PHYSADDR = 7
4、主要代码分析:
①定义一个MIB_IPNETTABLE类型的变量并获取此变量的大小,然后直接调用GetIpNetTable:
Dim ipNett As MIB_IPNETTABLE
dwsize = Len(ipNett)
r = GetIpNetTable(ipNett, dwsize, bOrder)
②调用For…Next循环,获取每个网卡–IP地址映射的信息:
For i = 0 To ipNett.dwNumEntries - 1
Print "类型", ipNett.MIB_Table(i).dwType
Next
③在②中循环获取物理地址:
ByteToS = ""
ByteToS = Right("00" & Hex(ipNett.MIB_Table(i).bPhysAddr(0)), 2)
For j = 1 To ipNett.MIB_Table(i).dwPhysAddrLen - 1 Step 1
ByteToS = ByteToS & "-" & Right("00" & Hex(ipNett.MIB_Table(i).bPhysAddr(j)), 2)
Next
④将长整型格式的ip地址转换为标准IP地址格式("xxx.xxx.xxx.xxx"格式):
Private Function inversaip(IPAddrLng As Long) As String
‘同 十、 4、 ③
End Function
5、运行时截图:
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十节 获取本机已探测的IP – 物理地址映射表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十节 获取本机已探测的IP – 物理地址映射表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十六节 获取本机IP 路由表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十六节 获取本机IP 路由表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第九节 获取网卡–IP地址映射表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第九节 获取网卡–IP地址映射表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十三节 获得目的地IP对应的物理地址
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十三节 获得目的地IP对应的物理地址
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第一节 获取本机网络适配器的信息
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第一节 获取本机网络适配器的信息
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第三节 获取本机TCP 信息列表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第五节 获取本机UDP信息列表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第三节 获取本机TCP 信息列表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第五节 获取本机UDP信息列表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第八节 获取本机网络参数
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第八节 获取本机网络参数
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十一节 获取当前计算机的IP信息
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十一节 获取当前计算机的IP信息
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第八节 获取本机网络参数
- 配置JBoss 4.0.5 的SSL
- n*n按行按列升序矩阵中找数问题
- 有趣的SQL(如何去掉一个最高分,一个最低分)
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第九节 获取网卡–IP地址映射表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十节 获取本机已探测的IP – 物理地址映射表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十一节 获取当前计算机的IP信息
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十二节 获得本机系统网络接口适配器的列表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十三节 获得目的地IP对应的物理地址
- J2EE包括以下技术: 技术术语
- 分治算法对任意的n值构造相应的格雷码
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十四节 返回本机网络接口数量
- 勿在重定向的href中定义onclick事件
- 菜鸟级问题!!谁能告诉我这样自动生成DataGrid