Spiffou
Messages postés100Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention 9 juin 2014
-
15 déc. 2008 à 18:15
Spiffou
Messages postés100Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention 9 juin 2014
-
16 déc. 2008 à 14:04
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
Spiffou
Messages postés100Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention 9 juin 20141 16 déc. 2008 à 14:04
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.