Message de rapport:
 

Re: Ping et net send comme sous dos(Presque)

Sujet: Re: Ping et net send comme sous dos(Presque)
par drcharly93 sur 11/8/2003 19:56:13

PROCEDURE Ping(sAdresseIP=NetAdresseIP(), sInfoRetour="", eDataToSend=32, eTimeOut=500)

IP_SUCCESS est un entier = 0
IP_STATUS_BASE est un entier = 0x2AF8
IP_BUF_TOO_SMALL est un entier = (IP_STATUS_BASE + 1)
IP_DEST_NET_UNREACHABLE est un entier = (IP_STATUS_BASE + 2)
IP_DEST_HOST_UNREACHABLE est un entier = (IP_STATUS_BASE + 3)
IP_DEST_PROT_UNREACHABLE est un entier = (IP_STATUS_BASE + 4)
IP_DEST_PORT_UNREACHABLE est un entier = (IP_STATUS_BASE + 5)
IP_NO_RESOURCES est un entier = (IP_STATUS_BASE + 6)
IP_BAD_OPTION est un entier = (IP_STATUS_BASE + 7)
IP_HW_ERROR est un entier = (IP_STATUS_BASE + 8)
IP_PACKET_TOO_BIG est un entier = (IP_STATUS_BASE + 9)
IP_REQ_TIMED_OUT est un entier = (IP_STATUS_BASE + 10)
IP_BAD_REQ est un entier = (IP_STATUS_BASE + 11)
IP_BAD_ROUTE est un entier = (IP_STATUS_BASE + 12)
IP_TTL_EXPIRED_TRANSIT est un entier = (IP_STATUS_BASE + 13)
IP_TTL_EXPIRED_REASSEM est un entier = (IP_STATUS_BASE + 14)
IP_PARAM_PROBLEM est un entier = (IP_STATUS_BASE + 15)
IP_SOURCE_QUENCH est un entier = (IP_STATUS_BASE + 16)
IP_OPTION_TOO_BIG est un entier = (IP_STATUS_BASE + 17)
IP_BAD_DESTINATION est un entier = (IP_STATUS_BASE + 18)
IP_ADDR_DELETED est un entier = (IP_STATUS_BASE + 19)
IP_SPEC_MTU_CHANGE est un entier = (IP_STATUS_BASE + 20)
IP_MTU_CHANGE est un entier = (IP_STATUS_BASE + 21)
IP_UNLOAD est un entier = (IP_STATUS_BASE + 22)
IP_ADDR_ADDED est un entier = (IP_STATUS_BASE + 23)
IP_GENERAL_FAILURE est un entier = (IP_STATUS_BASE + 50)
IP_PENDING est un entier = (IP_STATUS_BASE + 255)
INADDR_NONE est un entier = 0xFFFFFFFF

PING_TIMEOUT est un entier = eTimeOut

eRetour est un entier = -1
sInfoRetour="" //si la variable est passée par adresse
sMsgErr est une chaîne = "Erreur dans la fonction fg_Ping : "+RC
ePort est un entier
szAdresseIp est une chaîne ASCIIZ sur 255 = sAdresseIP
eDTS est un entier = eDataToSend
SI eDTS<0 OU eDTS>250 ALORS eDTS=32
szDataToSend est une chaîne ASCIIZ sur 250 = Répète("@", eDTS)
eAdresse est un entier
eStatut est un entier
tECHO est un ICMP_ECHO_REPLY
tWSAD est un WSADATA

//Initialisation du socket
//0x101 = WS_VERSION_REQD (version 2.2 de winsock)
SI AppelDLL32("wsock32", "WSAStartup", 0x101, &tWSAD) = IP_SUCCESS ALORS
//converti l'adresse IP en dword
eAdresse = AppelDLL32("wsock32", "inet_addr", szAdresseIp)
SI eAdresse <> INADDR_NONE ALORS
//Ouverture du port TCP
ePort = AppelDLL32("icmp.dll","IcmpCreateFile")
SI ePort ALORS
//ping
AppelDLL32("icmp.dll", "IcmpSendEcho", ePort, eAdresse,&szDataToSend, eDTS, 0, &tECHO, Dimension(tECHO), PING_TIMEOUT)
eStatut = tECHO:status
AppelDLL32("icmp.dll","IcmpCloseHandle", ePort)
SINON
sInfoRetour=sMsgErr+"Erreur dans l'ouverture du port."
FIN
SINON
//Le format de l'adresse est probablement invalide
eStatut = INADDR_NONE
FIN
//supprime le socket
SI AppelDLL32("wsock32", "WSACleanup")<>0 ALORS
sInfoRetour=sMsgErr+"Erreur dans la suppression du socket."
FIN
SI eStatut = IP_SUCCESS ALORS
eRetour = tECHO:RoundTripTime
sInfoRetour += "Ping sur "+szAdresseIp+" : " +tECHO:DataSize+" octets en "+ tECHO:RoundTripTime +" ms (ttl="+tECHO:Ttl+")"
SINON
eRetour = -1
sInfoRetour += "Pas de réponse de "+szAdresseIp+" (octets="+tECHO:DataSize+") - "
SELON eStatut
CAS INADDR_NONE: sInfoRetour += "Mauvais format de l'adresse IP."
CAS IP_BUF_TOO_SMALL: sInfoRetour += "Taille du buffer trop petite."
CAS IP_DEST_NET_UNREACHABLE: sInfoRetour += "Réseau IP inaccessible."
CAS IP_DEST_HOST_UNREACHABLE: sInfoRetour += "Destinataire inaccessible."
CAS IP_DEST_PROT_UNREACHABLE: sInfoRetour += "Dest prot inaccessible."
CAS IP_DEST_PORT_UNREACHABLE: sInfoRetour += "Port destinataire inaccessible."
CAS IP_NO_RESOURCES: sInfoRetour += "Pas de ressource."
CAS IP_BAD_OPTION: sInfoRetour += "Mauvaise option."
CAS IP_HW_ERROR: sInfoRetour += "Erreur hw_error."
CAS IP_PACKET_TOO_BIG: sInfoRetour += "Paquet trop grand."
CAS IP_REQ_TIMED_OUT: sInfoRetour += "Time out."
CAS IP_BAD_REQ: sInfoRetour += "Mauvaise requete."
CAS IP_BAD_ROUTE: sInfoRetour += "Mauvaise route."
CAS IP_TTL_EXPIRED_TRANSIT: sInfoRetour += "Ttl expiré transit."
CAS IP_TTL_EXPIRED_REASSEM: sInfoRetour += "Ttl expiré reassem."
CAS IP_PARAM_PROBLEM: sInfoRetour += "Probleme paramètre."
CAS IP_SOURCE_QUENCH: sInfoRetour += "ip source quench."
CAS IP_OPTION_TOO_BIG: sInfoRetour += "Option trop grande."
CAS IP_BAD_DESTINATION: sInfoRetour += "Mauvaise destination."
CAS IP_ADDR_DELETED: sInfoRetour += "Adresse IP supprimée."
CAS IP_SPEC_MTU_CHANGE: sInfoRetour += "ip spec mtu change."
CAS IP_MTU_CHANGE: sInfoRetour += "ip mtu_change."
CAS IP_UNLOAD: sInfoRetour += "ip unload."
CAS IP_ADDR_ADDED: sInfoRetour += "ip addr added."
CAS IP_GENERAL_FAILURE: sInfoRetour += "Echec général IP."
CAS IP_PENDING: sInfoRetour += "IP pending."
CAS PING_TIMEOUT: sInfoRetour += "Ping timeout."
AUTRES CAS: sInfoRetour += "Erreur inconnue."
FIN
FIN
SINON
sInfoRetour=sMsgErr+"Erreur d'initialisation du socket."
eRetour = -1
FIN

RENVOYER eRetour

Extrait d'une partie d'une classe.
Bon Dev
A+
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2