闂傚倸鍊搁崐鎼佸磹閹间礁纾圭€瑰嫭鍣磋ぐ鎺戠倞鐟滃繘寮抽敃鍌涚厱妞ゎ厽鍨垫禍婵嬫煕濞嗗繒绠抽柍褜鍓欑粻宥夊磿闁单鍥敍濠婂懐鐒奸柣搴秵閸嬩焦绂嶅⿰鍫熺厸闁告劑鍔岄埀顒傛暬楠炲繘鍩勯崘褏绠氬銈嗗姂閸婃洟寮搁幋婢㈠酣宕惰闊剟鏌熼鐣屾噰妞ゃ垺妫冨畷鐔煎Ω閵夈倕顥氶柣鐔哥矊缁绘帡宕氶幒鎾剁瘈婵﹩鍓涢娲⒑閹稿孩鐓ラ柛妯荤矒瀹曟垿骞樼紒妯绘珖闂侀€炲苯澧撮柟顕€绠栭弫鎾绘偐閼碱剦鍚嬫俊鐐€栧Λ浣规叏閵堝鏁婇柡鍥ュ灪閳锋帒霉閿濆懏鎲哥紒澶屽劋娣囧﹪顢曢姀鈥充淮闂佽鍠氶崑銈夊极閸愵喖纾兼慨妯块哺閻擄綁姊绘担鍝ョШ婵☆偄娼¢幃鐐烘晝閸屾稑浜楅梺闈涱槴閺呮粓鎮¢悢鍏肩厸闁搞儮鏅涙禒婊堟煃瑜滈崜娆忥耿闁秴鐒垫い鎺嶈兌閸熸煡鏌熼崙銈嗗     婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i姀鐘差棌闁轰礁锕弻鈥愁吋鎼粹€崇闂傚倸鍋嗛崹閬嶅Φ閸曨垰鍐€闁靛ě鍛帎缂傚倷娴囩紙浼村磹濠靛钃熼柨婵嗩槹閺呮煡鏌涘☉鍗炴灍闁圭兘浜堕幃妤冩喆閸曨剛顦ㄩ梺缁樻惈缁绘繂顕f繝姘亜閻炴稈鈧厖澹曞┑鐐村灦椤忎即骞嬮敃鈧壕鍧楁煛閸モ晛鏋旂紒鐘荤畺閺岀喓鈧稒岣块幊鍐煟韫囧﹥娅婇柡宀嬬秮楠炴ḿ鈧潧鎲¢崚娑㈡⒑閸濆嫭婀伴柣鈺婂灦閻涱噣宕堕鈧粈鍌炴煕濠靛嫬鍔滈柡鍛偢濮婄粯鎷呴搹鐟扮闂佺懓鎲¢幃鍌炪€侀弽銊ョ窞濠电姴瀛╃紞搴♀攽閻愬弶鈻曞ù婊勭矒楠炴垿鎳滈悙閫涚盎闂佽宕樺▔娑欑濠婂啠鏀介柍鈺佸暞閵囨繃鎱ㄦ繝鍛仩闁瑰弶鎸冲畷鐔碱敇閻旂ǹ鏅搁梺璇叉唉椤煤閻斾赴缂氱憸鏃堛€佸璺何ㄩ柨鏂垮⒔閻﹀牓姊洪幖鐐插姌闁告柨绉撮埢宥夊閵堝棌鎷洪柣鐘充航閸斿苯鈻嶉幇鐗堢厵闁告垯鍊栫€氾拷

45fan.com - 路饭网

搜索: 您的位置主页 > 无线路由器 > 阅读资讯:怎么样在vb使用Iphlpapi.dll获取网络信息?

怎么样在vb使用Iphlpapi.dll获取网络信息?

2016-09-04 07:18:19 来源:www.45fan.com 【

怎么样在vb使用Iphlpapi.dll获取网络信息?

※==================================================================

※本连载文章说明:

※1、连载首发于《软件报》(http://www.sweek.com)2006年21期(2006年5月22日);

※2、此次网上连载采用的是原稿件结构,内容与《软件报》发表略有不同;

※3、谢绝除《软件报》及其相关刊物之外的传统媒体部分或全部转载;

※4、谢绝任何收费媒体、网络转载;

※5、原作者:uruseibest ,blog:http://blog.csdn.net/uruseibest;

※6、如有其它疑问,请联系作者;

※7、如有转载,必须连同本说明一并发表,否则将追究转载者责任。

※======================================================================

第四节 实例二:探测到某个IP地址经过的路由列表

计算机在Internet中传递信息时,并不能直接从某一主机上得到去往另一主机的路径,必须通过路由将信息传到主机。发送ICMP报时,ICMP报头中包含了一个TTL设置,报文每当经过一个路由,TTL值相应的减1。当请求报文在传输过程中超时,即TTL被减为0,则该路由器返回一个目标不可达到报文;否则在TTL未被减少到0时,报文到达目标主机,则目标主机返回回应报文,表示数据可以正常到达。我们可以利用此原理,开始时将TTL设置为1,然后发出ICMP报,获得响应,检验地址是否是目标主机IP地址,是目标主机的话,表示到达目标主机;不是的话,返回的地址就是最后到达的路由器的地址,然后将TTL设置为2,重复以上过程,直至TTL设置为255

在这个例子中,将使用第二章第十九节所用到的函数、类型及常量(请参看第二章第十九节中的介绍),但对IcmpSendEcho函数声明作一点变化。

Private Declare Function IcmpSendEcho Lib "icmp.dll" ( _

ByVal IcmpHandle As Long, ByVal DestinationAddress As Long, _

ByVal RequestData As String, ByVal RequestSize As Long, _

RequestOptions As IP_OPTION_INFORMATION, ReplyBuffer As ICMP_ECHO_REPLY, _

ByVal ReplySize As Long, ByVal Timeout As Long) As Long

其中RequestOptions是指向IP头请求选项的IP_OPTION_INFORMATION类型的指针,可以为空。如果没有具体的要求,那么就设置为Long,在调用的时候传0;如果要设定IP头请求选项,那么这里设置为IP_OPTION_INFORMATION类型,在调用的时候传定义为IP_OPTION_INFORMATION类型的变量。

主要代码如下:

Dim RBuffer As ICMP_ECHO_REPLY

Dim pIOI As IP_OPTION_INFORMATION

Dim Realip As String

IcmpHandle = IcmpCreateFile() 创建一个Icmp句柄

RData = "Hi,Hello!"

RequestSize = Len(RData)

DAddr = inet_addr(Trim(Text1.Text)) 目标机IP地址的长整数形式

Timeout = 1000 超时设置,毫秒

ReplySize = Len(RBuffer)

For i = 1 To 255

pIOI.Ttl = I 设置TTL

DoEvents

r = IcmpSendEcho(IcmpHandle, DAddr, RData, RequestSize, pIOI, RBuffer, ReplySize + 8, Timeout) 发送Icmp报文

DoEvents

If r <> 1 Then List1.AddItem "错误,终止": Exit For 检测是否出错

Realip = inversaip(RBuffer.Address) 将长整型IP转为点数格式字符串IP

List1.AddItem i & " IP " & Realip & ":" & RBuffer.RoundTripTime & "ms"

If Realip = Trim(Text1.Text) Then Exit For 比较IP地址,如果相同则到达目标主机

Next

r = IcmpCloseHandle(IcmpHandle) 关闭Icmp句柄

程序运行时截图:

 

本文地址:http://www.45fan.com/a/wireless/71973.html
Tags: 获取 网络 Iphlpapi.dll
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部