Emmanuel Delahaye C is a sharp tool | Dinan a écrit :
Code :
- if ((err = recv(poll_list[i].fd, pSock, MAX_IO+1, 0)) < 1) {
|
Comment est ce que je peut effacer pSock pour que dans ma boucle, son ancienne valeur ne revienne pas ?, pSock est défini ainsi : Code :
- char *pSock = (char*)malloc(1+sizeof(char)*MAX_IO);
|
|
Il n'y a rien à effacer. Ce qui compte, c'est de tester le valeur retournée par recv(). C'est le nombre de bytes valides si il est > 0. On sait donc exactement où mettre le 0 si c'est une chaine.
Pour éviter le débordement, on passe une taille inférieure de 1 à recv(). Usage courant :
Code :
- char data[128];
- int err = recv (fd, data, sizeof data - 1, 0);
- if (err >= 0)
- {
- size_t n = err;
- if (n != 0)
- {
- data[n] = 0;
- printf ("received : '%s'", data);
- fflush (stdout);
- }
- }
- else
- {
- /* erreur */
- }
|
---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
|