在vb中使用Iphlpapi.dll获取网络信息 第二章 第六节 获取当前UDP连接情况
来源:互联网 发布:开源软件许可协议 编辑:程序博客网 时间:2024/05/21 07:46
※==================================================================
※本连载文章说明:
※1、连载首发于《软件报》(http://www.sweek.com)2006年21期(2006年5月22日);
※2、此次网上连载采用的是原稿件结构,内容与《软件报》发表略有不同;
※3、谢绝除《软件报》及其相关刊物之外的传统媒体部分或全部转载;
※4、谢绝任何收费媒体、网络转载;
※5、原作者:uruseibest ,blog:http://blog.csdn.net/uruseibest;
※6、如有其它疑问,请联系作者;
※7、如有转载,必须连同本说明一并发表,否则将追究转载者责任。
※======================================================================
第六节 获取当前UDP连接情况
1、函数:
Private Declare Function GetUdpTable Lib "iphlpapi.dll" (ByRef pTcpTable As MIB_UDPTABLE, ByRef pdwSize As Long, ByVal bOrder As Long) As Long
参数说明:
pUdpTable:[输出]指向一个缓存作为MIB_UDPTABLE类型用来接收UDP监听表。
pdwSize:[输入或输出]输入,指定pUdpTable参数所占缓存大小;输出,如果指定的缓存大小不足,将设置为所须的大小。
bOrder:[输入]指定返回的表是否按分类排列。如果为TRUE,按以下分类排列:1、IP地址;2、端口。
返回值:成功,返回0;失败,返回错误代码。
2、使用到的类型:
①MIB_UDPTABLE 包含MIB_UDPROW类型
Type MIB_UDPTABLE
dwNum_Of_Entries As Long '当前 UDP连接的总数
UDP_Table() As MIB_UDPROW '指向包含MIB_UDPROW类型的指针
End Type
备注:实际使用中可以定义:UDP_Table(120) As MIB_UDPROW ' 预留足够缓存
②MIB_UDPROW包含发送和接收UDP数据包的地址信息。它的格式如下:
Type MIB_UDPROW
dwLocalAddr As Long '本地IP
dwLocalPort As Long '本地端口
End Type
3、使用到的常量:
无
4、主要代码分析:
①定义一个MIB_TCPTABLE类型的变量,因为我们在定义MIB_TCPTABLE类型的时候预留了足够的缓存( TCP_Table(120) As MIB_TCPROW ),因此获得定义变量的大小后直接调用GetTcpTable。但是要注意的是,实际获得的UDP连接的总数应为dwNum_Of_Entries的值,一般小于我们的定义(120):
Dim Mudp As MIB_UDPTABLE
mudplen = Len(Mudp)
rvalue = GetUdpTable(Mudp, mudplen, True)
②使用For…Next循环遍历各个Tcp连接的信息:
For i = 0 To Mudp.dwNum_Of_Entries - 1
Print Mudp.UDP_Table(i).dwLocalAddr & ":" & Mudp.UDP_Table(i).dwLocalPort
Next
③因为MIB_UDPTABLE 类型中dwLocalAddr为一长整型数,因此要通过转换来获得IP地址:
Dim Ip_Buf(1 To 4) As Byte
CopyMemory Ip_Buf(1), dwLocalAddr, 4
GetIp = CStr(Ip_Buf(1)) + "." + CStr(Ip_Buf(2)) + "." + CStr(Ip_Buf(3)) + "." + CStr(Ip_Buf(4))
④因为MIB_UDPTABLE类型中dwLocalPort为一长整型数,因此要通过转换来获得端口:
GetPort = dwLocalPort/ 256 + (dwLocalPort Mod 256) * 256
5、运行时截图:
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第六节 获取当前UDP连接情况
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第六节 获取当前UDP连接情况
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第四节 获取当前TCP连接情况
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第四节 获取当前TCP连接情况
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第五节 获取本机UDP信息列表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第五节 获取本机UDP信息列表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十一节 获取当前计算机的IP信息
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十一节 获取当前计算机的IP信息
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十七节 设置TCP连接状态
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十七节 设置TCP连接状态
- 在vb中使用Iphlpapi.dll获取网络信息 第四章 第二节 一个重要函数
- 在vb中使用Iphlpapi.dll获取网络信息 第四章 第二节 一个重要函数
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第二节 获取MIB-II 接口表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第二节 获取MIB-II 接口表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十六节 获取本机IP 路由表
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第十六节 获取本机IP 路由表
- 在vb中使用Iphlpapi.dll获取网络信息 第三章 第二节 从C原型到Vb声明
- 在vb中使用Iphlpapi.dll获取网络信息 第三章 第二节 从C原型到Vb声明
- 看完9个笑话 顿悟9个人生道理
- 组织之间的关系就好像是个大家庭
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第五节 获取本机UDP信息列表
- 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 – 物理地址映射表