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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 char data[BUF_SIZE]; // Data buffer memset(data,0,sizeof(data)); int data_len = sizeof(data); // Length initialisation
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 :
Je recupere un identifiant que le serveur m'envoie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part len = recv(sockfd,buffer,BUF_SIZE,0); // Waiting for ID reception
Coté serveur :
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 ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 sprintf_s(data,"%d",clientMax); data_len=send(connfd[clientMax], data,5, 0);
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