Sockets: fonction recv()!!!!!

dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 - 11 juin 2004 à 21:41
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 - 12 juin 2004 à 18:05
bonjour,

j'essais de faire communiquer 2 programmes avec les sockets.

J'utilise la fonction recv():

recv(m_socket,recvbuf,50,0);

mais j'ai beau effacer la chaine recvbuf avec : strcpy(recvbuf,""); ,j'ai l'impression qu'il y reste toujours qqchose dedans!

par exemple si le client envoie: "10!14" le serveur recoit:"10!14"

mais ensuite si le client envoie: "9!14", le serveur recoit:"9!144"

je galere trop et je voudrais savoir si il existe un autre buffer integré a la fonction recv() qui enregistre les données qu'elle recoit puis les recopies dans la chaine de caractere que j'ai defini(recvbuf).

Si oui comment puis je l'effacer?

merci!
A voir également:

3 réponses

cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
12 juin 2004 à 10:32
Uilise memset(recvbuf, 0, sizeof recvbuf); pour "vider" ton buffer...Une ptite remark : si tu communik sur un mm ordinateur, remplace la fonction recv(..) par recvfrom(..), cette fonction est specifik au protocole UDP, alors ke lotre est pluto pour TCP/IP...

Voila,

++

Alhexman
0
Viper31 Messages postés 96 Date d'inscription mardi 2 avril 2002 Statut Membre Dernière intervention 7 août 2005
12 juin 2004 à 10:52
AlexMAN , je vois pas ce qui empeche de faire du TCP sur le meme pc ... il peut dev sur le meme pc d abord , mais peut etre que ca sera pas fait pour tourner sur le meme pc plus tard !! qui sait ...

sinon meme remarqué , "vide" ton buffer , autant coté client que serveur ...

Puis une erreur courante : send(num_sockc , buffer , strlen(buffer) , 0); <- ici souvent , les gens mettent sizeof au lieu de strlen , ce qui bien sur est une hérésie en soit !!!

par contre pour recv , sizeof bien sur , car tu sais pas a priori le nb de char que tu va recevoir .... voila !

++ Viper31
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
12 juin 2004 à 18:05
je vous remercie!

En effet pour faire mes test je le client et le serveur sur le meme PC mais ca fonctionne bien...

Je vais essayer d'utiliser : memset(recvbuf, 0, sizeof recvbuf);

Sinon j'ai trouvé une autre methode pour effacer tous les caracteres de la chaine :

strcpy,recvbuf," ");

en mettant plein d'espaces ca fonctionne!
0
Rejoignez-nous