程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 利用堆棧來ping計算機

利用堆棧來ping計算機

編輯:vc教程

以下的這個類是解決一個很普通的問題的:在一台WIN95的計算機上怎麼樣利用MSTCP堆棧去PING另外一台計算機。當然,這個類在NT3.51和NT4上也可以用。顯然,MicroSoft公司不會那麼笨,在WIN系統中又另外構造這麼一個單獨的機制來解決這個問題,讓本來就復雜的WIN系統更加復雜。那麼,我們只能用ICMP DLL自己來解決這個問題了。不過,很讓人失望,MicroSoft公司直到Winsock 2.0也沒有解決這個問題。

難題就是:給一個計算機的名字,或者一台計算機的IP地址,怎麼樣去PING它,而且得到它的響應時間。所以我們用了ICMP DLL,而對於一些SOCKET結構來說,在CSocket中已經全部都有定義了。所以,下面的類是一個CSocket的子類,它將會有更好的功能來解決更多的問題。不過你得先得到ICMPAPI.H,ICMAPI.CPP,ICMP.LIB和IPEXPORT.H,IPEXPORT.CPP這些文件,這些文件應該加在你的工程中。這些文件你可以在Microsoft Developers Network的光盤上得到,不過在微軟公司的主頁上也能拿到,而且更新。

類中有4個公共函數,如下:

unsigned long ResolveIP(CString strIP)

unsigned long ResolveName(CString strHostName)

CString GetIP(unsigned long ulIP)

DWORD PingHost(unsigned long ulIP, int iPingTimeout)

ResolveIP(CString strIP)函數使用一個IP地址的字符串來作為參數,返回值是IP地址值。

ResolveName(CString strHostName)函數使用一計算機名的字符串來作為參數,經過DNS或者WINS的解析,返回值是被PING計算機的IP 地址,注意它使用了GetHostByName模塊化。

GetIP(unsigned long ulIP)函數是以IP地址作為參數(注意是IP地址),返回值是一個表示IP地址的字符串。

PingHost(unsigned long ulIP, int iPingTimeout)函數,第1個參數是IP地址(注意是IP地址,而不是IP地址的字符串),第2個參數是表示時間值的,表示間隔時間的。函數功能是,去PING一台計算機,返回值是PING的響應時間。

  1. 上一頁:
  2. 下一頁:
欄目導航
Copyright © 程式師世界 All Rights Reserved