在vb中使用Iphlpapi.dll获取网络信息 第二章 第八节 获取本机网络参数
来源:互联网 发布:淘宝的nmd都是真货吗 编辑:程序博客网 时间:2024/05/21 12:39
※==================================================================
※本连载文章说明:
※1、连载首发于《软件报》(http://www.sweek.com)2006年21期(2006年5月22日);
※2、此次网上连载采用的是原稿件结构,内容与《软件报》发表略有不同;
※3、谢绝除《软件报》及其相关刊物之外的传统媒体部分或全部转载;
※4、谢绝任何收费媒体、网络转载;
※5、原作者:uruseibest ,blog:http://blog.csdn.net/uruseibest;
※6、如有其它疑问,请联系作者;
※7、如有转载,必须连同本说明一并发表,否则将追究转载者责任。
※======================================================================
第八节 获取本机网络参数
1、函数:
Private Declare Function GetNetworkParams Lib "IPHlpApi.dll" (FixedInfo As Any, pOutBufLen As Long) As Long
参数说明:
pFixedInfo:[输出]指向一个接收本机网络参数的数据块。
pOutBufLen:[输入,输出]指向一个ULONG变量,改变量指定了FixedInfo参数的大小。如果指定的大小不够大,将设置为须要的大小并返回ERROR_BUFFER_OVERFLOW错误。
返回值:成功,返回0;失败,返回错误代码。
2、使用到的类型:
①IP_ADDR_STRING描述IP 地址链表的节点。
见 第二章 第一节 2 ②
②FIXED_INFO包含电脑网络参数信息
Type FIXED_INFO
HostName As String * MAX_HOSTNAME_LEN ‘本机名
DomainName As String * MAX_DOMAIN_NAME_LEN ‘本机DNS域
CurrentDnsServer As Long ‘保留,使用DnsServerList获取DNS服务器的IP地址
DnsServerList As IP_ADDR_STRING ‘本机采用的DNS服务器链表
NodeType As Long ‘节点类型,以下值:
1 BROADCAST_NODETYPE IP广播,b节点NetBIOS名字解析法
2 PEER_TO_PEER_NODETYPE 点到点通信,p节点名字解析
4 MIXED_NODETYPE Mixed,m节点NetBIOS名字解析法
8 HYBRID_NODETYPE Hybrid,h节点NetBIOS名字解析法
Else 未知节点类型
ScopeId As String * MAX_SCOPE_ID_LEN ‘DHCP范围名字
EnableRouting As Long ‘本机能否路由
EnableProxy As Long ‘本机能否作为地址解析协议(ARP)代理
EnableDns As Long ‘本机能否DNS查询
End Type
备注:此类型在vb中和c中的定义有所不同,详情请参看MSDN。
3、使用到的常量:
Const MAX_HOSTNAME_LEN = 132
Const MAX_DOMAIN_NAME_LEN = 132
Const MAX_SCOPE_ID_LEN = 260
4、主要代码分析:
①由于IP_ADDR_STRING的实际大小未知,我们不能直接获取其大小,所以首先对函数GetNetworkParams进行两次调用,第一次调用获得参数pOutBufLen的实际大小;第二次调用获取FixedInfoBuffer(0)的数据。代码如下:
Dim FixedInfoBuffer() As Byte
FixedInfoSize = 0
rvalue = GetNetworkParams(ByVal 0, FixedInfoSize)
ReDim FixedInfoBuffer(FixedInfoSize - 1)
rvalue = GetNetworkParams(FixedInfoBuffer(0), FixedInfoSize)
②使用copymemory函数将数据拷贝到FixedInfo中,然后就可以使用FIXED_INFO结构了:
CopyMemory FixedInfo, FixedInfoBuffer(0), FixedInfoSize
Print "Host Name", FixedInfo.HostName
③采用Do循环来获取所有DNS服务器地址:
Print "DnsServer IP", FixedInfo.DnsServerList.IpAddress
pAddrStr = FixedInfo.DnsServerList.Next
Do While pAddrStr <> 0
CopyMemory IPAS, ByVal pAddrStr, LenB(IPAS)
Print "DNSServer IP", IPAS.IpAddress
pAddrStr = IPAS.Next
5、运行时截图:
- 在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获取网络信息 第二章 第十四节 返回本机网络接口数量
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十四节 返回本机网络接口数量
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十六节 获取本机IP 路由表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十六节 获取本机IP 路由表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十二节 获得本机系统网络接口适配器的列表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十二节 获得本机系统网络接口适配器的列表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十节 获取本机已探测的IP – 物理地址映射表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十节 获取本机已探测的IP – 物理地址映射表
- 在vb中使用Iphlpapi.dll获取网络信息 第四章 第二节 一个重要函数
- 在vb中使用Iphlpapi.dll获取网络信息 第四章 第二节 一个重要函数
- Be a QQer
- 通过Remoting分布公网上的Server实现对Client的回调
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第六节 获取当前UDP连接情况
- 演示DataSet类不同状态的操作
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第七节 获取本机网间控制报文协议(ICMP)信息
- 在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对应的物理地址