Class McsICMP
Data nPort,nStatus,cData,cOptions,nTimeout,nElapsed,cEcho,cIp,nSeconds,cLog
Method New(cIp)
Method SendEcho()
End Class
Method New(cIpAddress) Class McsICMP
// Internet Control Message Protocol - (ICMP)
// Packed INternet Grouper - (PING)
::cIp := cIpAddress
::nPort := 0
::nStatus := 0
::cData := "12345678901234567890123456789012"
::cOptions := ""
::nTimeout := 100
::nSeconds := 0
::cEcho := Space(278)
return Self
Method SendEcho() Class McsICMP
WsaStartUp()
::cIP := GetHostByName(::cIP)
WsaCleanUp()
::nPort := IcmpCreateFile()
::nSeconds := Seconds()
::nStatus := IcmpSendEcho(::nPort,inet_addr(::cIP),::cData,Len(::cData),0,::cEcho,Len(::cEcho),::nTimeout)
::nElapsed := Seconds() - ::nSeconds
IcmpCloseHandle(::nPort)
Return (::nStatus > 0)
DLL32 FUNCTION inet_addr(cIP AS STRING) AS LONG PASCAL FROM "inet_addr" LIB "wsock32.dll"
DLL32 FUNCTION IcmpCreateFile() AS LONG PASCAL FROM "IcmpCreateFile" LIB "icmp.dll"
DLL32 FUNCTION IcmpCloseHandle(IcmpHandle AS LONG) AS LONG PASCAL FROM "IcmpCloseHandle" LIB "icmp.dll"
DLL32 FUNCTION IcmpSendEcho(IcmpHandle AS LONG,DestinationAddress AS LONG,RequestData AS STRING,RequestSize AS LONG,RequestOptions AS LONG,ReplyBuffer AS LPSTR,ReplySize AS LONG,Timeout AS LONG) AS LONG PASCAL FROM "IcmpSendEcho" LIB "icmp.dll"
DLL32 FUNCTION WSAGetLastError() AS _INT PASCAL FROM "WSAGetLastError" LIB "wsock32.dll"