Erreur 10049 sur socket UDP

Signaler
Messages postés
5
Date d'inscription
vendredi 10 janvier 2003
Statut
Membre
Dernière intervention
25 avril 2005
-
Messages postés
1
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
15 février 2004
-
Salut tous le monde...

Me voici depuis plusieurs jour confronté un a problème étrange.
Je veux envoyer un message par l'intermédiaire d'un packet UDP sur un serveur. Mais après le 'bind' je me retrouve avec une erreur 10049 (Cannot assign requested address.). On gros d'après ce que j'ai compris l'adresse IP n'existe pas. Sachant que je peux contacter le serveur avec d'autre programme VNC et que le port concerné est ouvert c'est étrange. Mais quand je met mon adresse IP locale là ca fonctionne. J'ai vérifié des dixaines de fois mon code et je ne vois pas d'erreur.

Si je ne tient pas compte du résultat de bind/je supprime l'appel a la fonction
-> Autre erreur : 10054 (Connection reset by peer.)

Quelqu'un a t'il une idée ?

Voici le bout de code incriminé
________________________________________________

WSADATA wsa;
SOCKET sock;
SOCKADDR_IN sin;
char buffer[255];
CString QueryStr = "TEST";
CString IP = "213.20.56.85";
int Port = 1000;
WSAStartup(MAKEWORD(2,0),&wsa);
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = inet_addr(IP);
sin.sin_port = htons(Port);

sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); // On déclare le socket a Windows
if(sock != INVALID_SOCKET)
{
if(bind(sock, (SOCKADDR*)&sin, sizeof(sin)) != SOCKET_ERROR) // On le lie aux propriétés définies plus haut
{
if(sendto(sock, QueryStr, QueryStr.GetLength(), 0, (SOCKADDR*)&sin, sizeof(sin)) != SOCKET_ERROR)
{
int sinsize = sizeof(sin);
if(recvfrom(sock, buffer, sizeof(buffer), 0, (SOCKADDR*)&sin, &sinsize) != SOCKET_ERROR)
{
// J'envoie vers une fonction qui traite le message
} else {
GetSocketError(); // C'est une fonction qui m'affiche le code SOCKET_ERROR et une description
}
} else {
GetSocketError();
}
} else {
GetSocketError();
}
} else {
GetSocketError();
}

________________________________________________

Merci d'avance pour votre aide :)

2 réponses

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
Salut,
Pas besoin de binder ton socket lorsque c'est toi qui établi la connexion (TCP) ou lorsque c'est toi qui envoie un packet en 1er (UDP).
De plus on binde avec une adresse locale(la tienne) et non distance.
Messages postés
1
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
15 février 2004

J'ai aussi la même erreur depuis hier, sur un programme delphi qui fonctionnait depuis plus d'un an sans aucun problème. (station W2000 pro vers W2000 serveur).
La seule chose que j'ai effectuée depuis hier ce sont Updates automatique proposés par Microsoft.
La cause vient surement de là ???