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+ |