Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
dark1933 dummy mioche

Inscrit le: 14 Sep 2003 Messages: 1
|
Posté le: Dim Sep 14, 2003 5:07 pm Sujet du message: RAW_SOCKET - IP - ICMP - Sendto() -Erreur 'WSAEADDRNOTAVAIL' |
|
|
Salut à tous,
J'essaye désespérément d'envoyer un Ping en forgeant le datagramme IP adéquate.
J'obtiens l'erreur "WSAEADDRNOTAVAIL" au moment de l'appel de la fonction Sendto() :
Cannot assign requested address.
The requested address is not valid in its context.
This normally results from an attempt to bind to an address that is not valid for the local computer.
This can also result from connect, sendto, WSAConnect, WSAJoinLeaf, or WSASendTo when the remote address or port is not valid for a remote computer (for example, address or port 0).
===========================================================================
Voici les étapes importantes de la procedure :
// Initialisation des structure ICMP et IP
ICMP_HEADER->Type=8;
ICMP_HEADER->Code=0;
ICMP_HEADER->ID=1;
ICMP_HEADER->SEQ=1;
ICMP_HEADER->Checksum=0;
memcpy(&ICMP_HEADER->ICMP_DATA,"12345678",8);
ICMP_HEADER->Checksum=CALCUL_CHECKSUM((unsigned short *)ICMP_HEADER,8);
IP_HEADER->VS_LET=69;
IP_HEADER->TOS=0;
IP_HEADER->Size=htons(36);
IP_HEADER->ID=htons(16);
IP_HEADER->Flags=2;
IP_HEADER->Offset=0;
IP_HEADER->TTL=255;
IP_HEADER->Proto=1;
IP_HEADER->Checksum=0;
IP_HEADER->IP_S=inet_addr("82.64.7.233"); // mon ip lors des essais
IP_HEADER->IP_D=inet_addr("216.239.59.99"); // ip de Google.fr
memcpy(&IP_HEADER->IP_DATA,&ICMP_HEADER,8);
IP_HEADER->Checksum=CALCUL_CHECKSUM((unsigned short *)IP_HEADER,10);
// Création de la RAW SOCKET
Socket_IP=socket(AF_INET,SOCK_RAW,IPPROTO_RAW);
// Modification des options pour pouvoir manipuler l'entête IP
setsockopt(Socket_IP, IPPROTO_IP, 2, (char *) &optval, sizeof(optval));
// Initialisation de la structure SOCKADDR_IN
ip_sock_info.sin_family=AF_INET;
ip_sock_info.sin_addr.s_addr=inet_addr("216.239.59.99");
ip_sock_info.sin_port=htons(7); // le n° de port n'intervient, mais on ne sait jamais
memset(&ip_sock_info.sin_zero,0x0,8);
// envoit des données => et là se produit l'erreur
sendto(Socket_IP,(char*)IP_HEADER,36,0,(struct sockaddr *)&ip_sock_info,sizeof(struct sockaddr_in)) |
|
Revenir en haut |
|
 |
_sebf dummy mioche

Inscrit le: 28 Juin 2004 Messages: 1
|
Posté le: Lun Juin 28, 2004 8:27 pm Sujet du message: Numéro du port non valide |
|
|
Salut,
Voici l'explication officielle de ton message d'erreur :
"This can also result from connect, sendto, WSAConnect, WSAJoinLeaf, or WSASendTo when the remote address or port is not valid for a remote computer (for example, address or port 0). "
Tu as donc certainement dû oublié de préciser le port.
_SebF
http://www.frameip.com
Pour ceux qui aiment TCPIP |
|
Revenir en haut |
|
 |
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum
|
|