在vb中使用Iphlpapi.dll获取网络信息 第二章 第十六节 获取本机IP 路由表
来源:互联网 发布:程序员招聘网 编辑:程序博客网 时间:2024/05/23 19:01
※==================================================================
※本连载文章说明:
※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 GetIpForwardTable Lib "iphlpapi.dll" (pIpForwardTable As MIB_IPFORWARDTABLE , pdwSize As Long, bOrder As Long) As Long
参数说明:
pIpForwardTable:[输出]指向接收IP路由表作为MIB_IPFORWARDTABLE类型的缓存
pdwSize:[输入,输出] 输入,指定 pIpForwardTable参数指向缓存的大小;输出,如果指定的缓存大小不够大,将设置此参数为必须的大小。
bOrder:[输入] 指定返回的映射表是否按照种类排列。TRUE,按以下顺序排列:目的地地址;生成路由的协议;多路径路由策略;下一跃点的地址。
返回值:成功,返回0;失败,返回错误代码。
2、使用到的类型:
①MIB_IPFORWARDTABLE 包含了IP路由表接口。
Type MIB_IPFORWARDTABLE
dwNumEntries As Long '表中路由接口数目
Table(120) As MIB_IPFORWARDROW '指向MIB_IPFORWARDROW类型阵列
End Type
②MIB_IPFORWARDROW 包含描述IP网络路由的信息
public type MIB_IPFORWARDROW
dwForwardDest as long '目的地IP地址
dwForwardMask as long '目的地主机的子网掩码
dwForwardPolicy as long '将会引起多通道路由选择的设置条件。参看RFC 1354。
dwForwardNextHop as long '路由器中IP地址的下一个跃点
dwForwardIfIndex as long '路由的接口序号
dwForwardType as long 'RFC 1354中路由的定义,以下值之一:
常量名称
值
说明
MIB_IPROUTE_TYPE_OTHER
1
其他
MIB_IPROUTE_TYPE_INVALID
2
非法路由
MIB_IPROUTE_TYPE_DIRECT
3
下一个跃点是目的地(本地路由)
MIB_IPROUTE_TYPE_INDIRECT
4
下一个跃点不是目的地 (远程路由)
dwForwardProto as long '生成路由的协议,具体IPX协议值参看Routprot.h,而IP条目参看Iprtrmib.h
dwForwardAge as long '路由持续时间,毫秒。仅用于路由远程访问服务(RRAS:Routing and Remote Access Service)运行时候,并且仅当路由类型为PROTO_IP_NETMGMT。
dwForwardNextHopAS as long '下一跃点的自治系统编号
dwForwardMetric1 as long '路由协议专有的公制值。详情参见RFC 1354。
dwForwardMetric2 as long '路由协议专有的公制值。详情参见RFC 1354。
dwForwardMetric3 as long '路由协议专有的公制值。详情参见RFC 1354。
dwForwardMetric4 as long '路由协议专有的公制值。详情参见RFC 1354。
dwForwardMetric5 as long '路由协议专有的公制值。详情参见RFC 1354。
End Type
3、使用到的常量:
无
4、主要代码分析:
①定义一个MIB_IPFORWARDTABLE类型的变量,对函数GetIpForwardTable进行两次调用,第一次调用获得参数pdwSize的实际大小;第二次调用获取pIpForwardTable数据:
Dim mIF As MIB_IPFORWARDTABLE
r = GetIpForwardTable(mIF, dwsize, order)
r = GetIpForwardTable(mIF, dwsize, order)
②调用For…Next循环,获取每个路由的信息:
For i = 0 To mIF.dwNumEntries - 1
Realip = inversaip(mIF.table(i).dwForwardDest)
RealMask = inversaip(mIF.table(i).dwForwardMask)
Print "ip", Realip
Print "mask", RealMask
Next
③将长整型格式的ip地址转换为标准IP地址格式("xxx.xxx.xxx.xxx"格式):
Private Function inversaip(IPAddrLng As Long) As String
‘同本章第九节 4 ③
End Function
5、运行时截图
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/UruseiBest/archive/2006/12/20/1450392.aspx
- 在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获取网络信息 第二章 第一节 获取本机网络适配器的信息
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第三节 获取本机TCP 信息列表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第五节 获取本机UDP信息列表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第一节 获取本机网络适配器的信息
- 在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获取网络信息 第二章 第二节 获取MIB-II 接口表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第二节 获取MIB-II 接口表
- linux vi 操作
- 数据添加(insert),删除(delete),更新(update)
- 有进展
- 高级复制(Advanced Replication),流复制(Stream Replication),备库(Dataguard)区别
- BREW 初级开发者教程 笔记
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十六节 获取本机IP 路由表
- C#的SQL数据访问
- win32控件消息处理
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十七节 设置TCP连接状态
- /etc/passwd 的格式介绍
- ORACLE 学习
- 9球和11球问题
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十八节 在本地电脑的地址解析协议(ARP )表中创建和删除一个ARP
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十九节 Ping一个IP地址