Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1651 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  probleme avec sockets : fonctionnement aléatoire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme avec sockets : fonctionnement aléatoire

n°1689374
bottedumal
open the Doors
Posté le 20-02-2008 à 14:47:44  profilanswer
 

Hello !
 
Voilà je suis en train de programmer un petit jeu de quizz en réseau, et je bloque sur les sockets, ou plus particulièrement sur la gestion du buffer que j'utilise je pense.
 
En gros, j'ai déclaré un buffer au début du type :
 
char* buffer = new char[255].
 
mon programme marche une fois sur 2, cad que parfois des variables disparaissent (elles sont "écrasées" je pense par le buffer). J'utilise memset pour clean le buffer avant chaque send ou receive :
 
memset(buffer,0,sizeof(buffer));  
 
 
J'ai ensuite testé avec un buffer de type non pointeur (j'ai un peu du mal avec les pointeurs en fait :d):
 
char buffer[256];
 
mais le résultat est le même.
 
Le problème est que les données de mon programme disparaisse (par exemple, la variable renvoyée par serie.get_reponse1() est parfois effacée, parfois pas).
Je vous laisse un bout de code, si quelqu'un voit ce que je fait mal je serais ravi de l'apprendre, depuis le temps que je cherche la dessus :(
 
donc là c'est le serveur (le problème apparait existe avant le send au client, donc pas besoin du client) :
 

Code :
  1. WSADATA WSAData;
  2. WSAStartup(MAKEWORD(2,0), &WSAData);
  3. SOCKET sock;
  4. SOCKADDR_IN sin;
  5. SOCKET mayosock;
  6. SOCKADDR_IN mayosin;
  7. SOCKET ketchupsock;
  8. SOCKADDR_IN ketchupsin;
  9. sock = socket(AF_INET, SOCK_STREAM, 0);
  10. sin.sin_addr.s_addr   = INADDR_ANY;
  11. sin.sin_family    = AF_INET;
  12. sin.sin_port    = htons(2048);
  13. bind(sock, (SOCKADDR *)&sin, sizeof(sin)); 
  14. listen(sock, 0);
  15. int sinsize = sizeof(mayosin);
  16. mayosock = accept(sock, (SOCKADDR *)&mayosin, &sinsize);
  17. char buffer[256];
  18. memset(buffer,0,sizeof(buffer));
  19. recv(sock,buffer,256,0);
  20. equipe=buffer;
  21. cout << "Bienvenue " << nom_joueur << " , vous etes dans l'equipe " << equipe << endl;
  22. memset(buffer,0,sizeof(buffer));
  23. //buffer = (char*)serie.get_nom_serie().c_str(); // ca c'était pour quand mon buffer etait de type char*
  24. strcpy(buffer, serie.get_nom_serie().c_str());
  25. send(mayosock, buffer, strlen(buffer),0);
  26. memset(buffer,0,sizeof(buffer));
  27. //buffer = (char*)serie.get_reponse1().c_str();
  28. strcpy(buffer, serie.get_reponse1().c_str());
  29. send(mayosock, buffer, strlen(buffer),0);


Message édité par bottedumal le 20-02-2008 à 14:49:27
mood
Publicité
Posté le 20-02-2008 à 14:47:44  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  probleme avec sockets : fonctionnement aléatoire

 

Sujets relatifs
[VB/VBA/VBS] Excel vba et Windows 64 bit: problème de shell ?C# : problème avec retour de valeur (return int)
[résolu] Petit problème de ThreadProblème de MCD pour produits à mulitples options
Problème code erreur PHP problème avec drawrect
probleme de frame en HTML.Probleme création nouveau membre
Problème de passage de variablesProblème avec Qt4
Plus de sujets relatifs à : probleme avec sockets : fonctionnement aléatoire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR