當前位置:成語大全網 - 書法字典 - 易語言wifi詞典

易語言wifi詞典

#包含?“stdafx.h“

#包含?& ltstdio.h & gt

#包含?& ltwindows.h & gt?

#包含?& ltwininet.h & gt

#pragma?註釋(lib,?“ws2_32.lib“)

#pragma?註釋(lib,?“wininet.lib“)

typedef?DWORD(_ _ stdcall?* IcmpSendEcho)(HANDLE,IPAddr,LPVOID,WORD,PIP_OPTION_INFORMATION,LPVOID,DWORD,DWORD);

typedef?手柄?(__stdcall?* icmp create file)(void);

typedef?布爾?(__stdcall?*IcmpCloseHandle)(句柄);

icmpcreatefileficimpcreatefile;

IcmpSendEchofIcmpSendEcho

IcmpCloseHandle?fIcmpCloseHandle

布爾?init fun(void)

{

HMODULE?lModl

lmo dl =(HMODULE)LoadLibrary?(“iphlapi . dll“);

如果?(lModl==0)?{

printf(“Load?那個?圖書館?有嗎?錯誤!\ n ");

回歸?假的;

}

否則{

fIcmpCreateFile =(IcmpCreateFile)GetProcAddress?(lModl,“icmp create file“);

fIcmpSendEcho =(IcmpSendEcho)GetProcAddress?(lModl,“IcmpSendEcho“);

fIcmpCloseHandle =(IcmpCloseHandle)GetProcAddress?(lModl,“IcmpCloseHandle“);

如果?(fIcmpCreateFile==NULL?||?fIcmpSendEcho==NULL?||?fIcmpCloseHandle = = NULL ){

printf(“Load?那個?功能?有嗎?錯誤!\ n ");

回歸?假的;

}

回歸?真實;

}

}

LPHANDLE?getping handle(void)

{

手柄?pHandle

pHandle = fIcmpCreateFile();

如果?((int)pHandle = =-1 ){

printf(“Load?ICMP?手柄?有嗎?錯誤!\ n ");

回歸?0;

}

否則{

回歸?(LPHANDLE)pHandle;

}

}

布爾?ping(LPSTR?pIPAddr)

{

手柄?iHwnd

iHwnd =(HANDLE)getping HANDLE();

IPAddr?pAddr

pAddr =(IP addr)inet _ addr?((夏爾?*)pip addr);

icmp_echo_reply?pData

for(int?I = 1;我& lt= LoopSendi++)

{

fIcmpSendEcho(iHwnd,pAddr,NULL,0,NULL,(LPVOID)& amp;pData,sizeof(icmp _ echo _ reply),0);

如果?(pData。狀態==0)

{

printf(“ping測試返回的結果:?時間=%dms?TTL=%d?\n“,(int)pData。往返時間,(int)pData。options . Ttl);

}

其他

{

printf(“Ping測試失敗...\ n“);

}

}

如果?(!fIcmpCloseHandle(iHwnd))?printf(“Close?手柄?有嗎?錯誤!\ n ");

回歸?真實;

}

至於主函數,您可以自己編寫,只需向Ping函數傳入壹個IP地址即可運行它。

對應的VB模塊代碼。

私人?申報?功能?IcmpCreateFile?Lib?“iphlpapi.dll”?()?作為什麽?長的

私人?申報?功能?IcmpSendEcho?Lib?“iphlpapi.dll”?(比亞迪爾?IcmpHandle?作為什麽?龍?比亞迪爾。目的地地址?作為什麽?龍?比亞迪爾。RequestData?作為什麽?字符串,?比亞迪爾。RequestSize?作為什麽?龍?比亞迪爾。請求選項?作為什麽?龍?回復緩沖區?作為什麽?ICMP_ECHO_REPLY,比亞迪爾。回復?作為什麽?龍?比亞迪爾。超時?作為什麽?長)?作為什麽?長的

私人?申報?功能?IcmpCloseHandle?Lib?“iphlpapi.dll”?(比亞迪爾?IcmpHandle?作為什麽?長)?作為什麽?長的

私人?申報?功能?inet_addr?Lib?“wsock32.dll“?(比亞迪爾?cp?作為什麽?字符串)?作為什麽?長的

私人?類型?IP _選項_信息

ttl?作為什麽?字節‘‘生存時間

托薩斯?字節??服務類型

旗幟?作為什麽?字節“”IP標頭標誌

OptionsSizeAs?字節??選項數據的大小,字節

OptionsData?作為什麽?長嗎?選項數據指針

結束?類型

私人?類型?ICMP_ECHO_REPLY

地址?長‘‘‘‘‘‘‘包含正在回復的IP地址。

狀態a?long‘‘包含回復的狀態(請參見後面的常量部分)。

往返測量?長嗎??RTT往返時間(毫秒)

DataSizeAs?整數?回復數據大小(字節)

預訂了嗎?整數?保持

ptrDataAs?長嗎??回復數據指針

選項a?IP _選項_信息?回復選項

數據即服務?字符串?*?250

結束?類型

公共的?類型?Rtn _ ICMPTestMessage

地址?作為什麽?線

狀態?作為什麽?字符串?‘‘是用函數編寫的。

測試成功嗎?作為什麽?布爾型?‘‘測試成功?

時間?作為什麽?長的

尺寸?作為什麽?長的

ttl?作為什麽?長的

結束?類型

公共的?功能?RtnICMPTestMessage(ByVal?TestIP?作為什麽?字符串,?比亞迪爾。超時?作為什麽?龍?比亞迪爾。打包?作為什麽?長)?作為什麽?Rtn _ ICMPTestMessage

暗淡?IcmpHandle?作為什麽?長的

IcmpHandle?=?icmp create file‘‘‘創建測試句柄。

暗淡?ICMPReply?作為什麽?ICMP_ECHO_REPLY

暗淡?LongIPAdde?作為什麽?長的

LongIPAddr?=?inet _ addr(TestIP)

暗淡?發送數據?作為什麽?為包大小設置了字符串“”。

發送數據?=?空間(包裝尺寸)

IcmpSendEcho?IcmpHandle,?LongIPAddr?發送數據,?len(SendData),?0,?ICMPReply,?len(ICMPReply)?超時

如果?ICMPReply。地位?=?0?然後

RtnICMPTestMessage。地址?=?TestIP

RtnICMPTestMessage.size?=?ICMPReply。數據大小

RtnICMPTestMessage。狀態?=?RtnICMPState(ICMPReply。狀態)

RtnICMPTestMessage.time?=?ICMPReply。往返時間

RtnICMPTestMessage.ttl?=?ICMPReply。Options.ttl

RtnICMPTestMessage.testSuccess?=?true‘‘‘測試成功。

其他

RtnICMPTestMessage。地址?=?TestIP

RtnICMPTestMessage。狀態?=?RtnICMPState(ICMPReply。狀態)

RtnICMPTestMessage.testSuccess?=?假‘‘‘測試失敗。

結束?如果

IcmpCloseHandle?IcmpHandle

結束?功能