Re-bonjour,
Tout d'abord je précise que je code sous windows.
Mon code de client / serveur marchait bien, jusqu'au moment ou j'ai voulu changer la taille max de mon buffer d'envoi, a ce moment la le serveur plante, car n'arrive pas a effectuer le send (qui me retourne -1), j'explique :
En gros, j'ai un :
1 2 3
| char data[BUF_SIZE]; // Data buffer
memset(data,0,sizeof(data));
int data_len = sizeof(data); // Length initialisation |
Je précise que ce bout de code est dans le main, ou sont aussi mes appels a send et recv. BUF_SIZE est defini hors du main.
Edit : si je defini mon data hors du main, ca ne marche pas, quelque soit la taille.
Coté client : apres avoir fait mon connect(), qui fonctionne :
len = recv(sockfd,buffer,BUF_SIZE,0); // Waiting for ID reception
Je recupere un identifiant que le serveur m'envoie.
Coté serveur :
1 2 3
| sprintf_s(data,"%d",clientMax);
data_len=send(connfd[clientMax], data,5, 0); |
Le probleme est que si BUF_SIZE vaut 512 cela fait planter le serveur, le send ne fonctionne pas. Si je met 255 cela marche parfaitement ...
Je ne comprend pas vu que je lui demande d'envoyer 5 octet, et non pas tout le buffer ! En quoi la taille maximal du buffer influerait elle dans mon envoi?
Edit 2 : en declarant data comme etant un char* et en effectuant un malloc, ca marche ! quelqu'un pourrait m'expliquer pourquoi? * ne comprend rien*
Partager