Bonjour à tous,
J'ai écrit un module en C que je réutilise dans un projet, où je déclare 3 variables statiques (la socket et les deux structures sockaddr_in client et serveur) qui ne peuvent être modifiées par un module exterieur :
La fonction init() initialise les 3 variables statiques (appel de socket(), bind()) et les fonctions wsendto() et wrecfrom() sont des wrappers pour les fonctions sendto et recvfrom.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 static unsigned int fd; static struct sockaddr_in local_addr; static struct sockaddr_in si_other; init() wsendto(char * buffer, int len) wrevfrom(char * buffer, int len)
Je recontre un souci avec ces fonctions wrapper : les premiers appels à ces fonctions gardent bien les paramètres initialisés dans init(), mais au bout de quelques appels, le port de destination change et je perds donc la communication avec l'application distante.
D'où ma question : une fois l'appel à bind() effectué, les informations définies dans init() ne devraient elles pas ne plus être modifiées ? Quelles pourraient être les raisons d'une modification du port destination, sachant que je ne fais plus de modifications sur la socket où les structures une fois l'appel à bind() effectué ?
Merci à vous.
Partager