Pb d'adresse IP pour transfert UDP unicast

Résolu
Spiffou Messages postés 100 Date d'inscription jeudi 1 avril 2004 Statut Membre Dernière intervention 9 juin 2014 - 15 déc. 2008 à 22:15
Spiffou Messages postés 100 Date d'inscription jeudi 1 avril 2004 Statut Membre Dernière intervention 9 juin 2014 - 16 déc. 2008 à 14:05
Double post car erreur de theme sur le 1er post.

Bonjour à tous,

une petite question qui reste sans réponse et
très mystérieuse pour moi (ou alors c'est tellement gros que depuis que
je me pose la question je ne vois plus le pb)

voici le contexte:

j'essaie de faire un transfert en UDP unicast entre 2 machines. pour
cela j'ai une fonction sendTo qui prend en argument divers paramètres
(dont l'ip de destination du message)
jusque là rien d'étonnant.


à l'utilisation je vois que les messages sont bien transmis mais pas de
la façon souhaitée (cf. code ci dessous), les messages sont envoyés en
broadcast et pas à la machine ciblée...
si l'un d'entre vous voit une explication à cela je serai très heureux de la connaitre.

merci d'avance

Spiffou

// Avec char *destIp = 10.0.11.7 à l'entrée de la fonction
char constDestIp[256];
sprintf (constDestIp,"%s",destIp);

sockaddr_in fsock;
memset(&fsock, 0, sizeof(fsock));
fsock.sin_family = AF_INET;           
fsock.sin_port = htons((u_short)destPort);   

fsock.sin_addr.s_addr = inet_addr(constDestIp);
printf(str,"TEST -%s",inet_ntoa(fsock.sin_addr));    // mon ip vaut 255.255.255.255

if (destIp)
{
    fsock.sin_addr.s_addr = inet_addr(destIp);
    printf(str,"TEST -%s",inet_ntoa(fsock.sin_addr));    // mon ip vaut 255.255.255.255
}

fsock.sin_addr.s_addr = inet_addr("10.0.11.7");
printf(str,"TEST -%s",inet_ntoa(fsock.sin_addr));    // mon ip vaut 10.0.11.7

1 réponse

Spiffou Messages postés 100 Date d'inscription jeudi 1 avril 2004 Statut Membre Dernière intervention 9 juin 2014 1
16 déc. 2008 à 14:05
J'ai trouvé la solution:

la chaine que je recevais en entrée était erronée et commençait par un espace:

" 10.0.11.7"

ce qui avait pour effet d'initialiser le sin_addr à INADDR_BROADCAST.


En espérant que cela serve à d'autres.

Merci à ceux qui se sont penchés sur mon pb.


Spiffou
3
Rejoignez-nous