1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| // Syntaxe :
//PING1 (<pAdresse> est chaîne [, <pBoucle> est entier [, <pTimeOut> est entier]])
//
// Paramètres :
// pAdresse (chaîne) : adresse IP
// pBoucle (entier - valeur par défaut=1) : nombre de ping
// pTimeOut (entier - valeur par défaut=250) : timeout du ping en ms
// Valeur de retour :
// Aucune
PROCEDURE PING1(pAdresse est une chaîne,pBoucle est entier = 1,pTimeOut est entier =250)
j est entier
//exemple d'utilisation PING1(NetAdresseIP("www.free.fr"),100)
//exemple d'utilisation PING1("192.168.1.14",1,1)
XIpAdress est un entier sans signe
XretVal est un entier
XSize est un entier
XhIcmp est un entier sans signe
Xerror est entier
XVmoy est entier
XReplyData est un entier sans signe
IP_OPTION_INFORMATION est une structure
TTL est un entier sans signe sur 1 octet
Tos est un entier sans signe sur 1 octet
Flags est un entier sans signe sur 1 octet
OptionsSize est un entier sans signe
OptionsData est une chaîne fixe sur 128
FIN
IP_ECHO_REPLY est une structure
Address est un tableau fixe de 4 entier sur 1 octet sans signe
Status est un entier sans signe
RoundTripTime est un entier sans signe
DataSize est entier sans signe
Reserved est un entier sans signe
data est un entier sans signe
Options est un IP_OPTION_INFORMATION
FIN
XL_EchoReply est un IP_ECHO_REPLY
XL_OptInfo est un IP_OPTION_INFORMATION
XSize = Dimension(XL_EchoReply)
XIpAdress = AppelDLL32("Wsock32", "inet_addr", pAdresse)
SI XIpAdress = 0xFFFFFFFF ALORS
Info("Adresse non conforme")
RETOUR
FIN
POUR j= 1 A pBoucle
XIpAdress = AppelDLL32("Wsock32", "inet_addr", pAdresse)
XhIcmp = AppelDLL32("icmp", "IcmpCreateFile")
XretVal = AppelDLL32("icmp", "IcmpSendEcho", XhIcmp, XIpAdress,Répète("A",32), 32, Null, &XReplyData, XSize, pTimeOut)
Transfert(&XL_EchoReply,&XReplyData,XSize)
SELON XL_EchoReply:Status
CAS 0 :
trace("Réponse de "+XL_EchoReply:Address[1]+"."+XL_EchoReply:Address[2]+"."+XL_EchoReply:Address[3]+"."+...
XL_EchoReply:Address[4]+" : Octets="+XL_EchoReply:DataSize+" temps="+XL_EchoReply:RoundTripTime+" ms"+" Satut :"+Remplace(XL_EchoReply:Status[[1]],0,"Ok"))
XVmoy+=XL_EchoReply:RoundTripTime
AUTRE CAS :
Xerror++
FIN
FIN
AppelDLL32("icmp", "IcmpCloseHandle", XhIcmp)
Info("Succes : "+Val(j-1-Xerror),"Erreur : "+Xerror,"Vitesse Moyenne : "+PartieEntière(Val(XVmoy/(j-1)))) |
Partager