Probleme envoi successif winsock

Ricco666 Messages postés 4 Date d'inscription mercredi 4 juin 2003 Statut Membre Dernière intervention 27 janvier 2004 - 7 nov. 2003 à 21:33
Ricco666 Messages postés 4 Date d'inscription mercredi 4 juin 2003 Statut Membre Dernière intervention 27 janvier 2004 - 8 nov. 2003 à 00:35
Bonjour tout le monde, merci de prendre le temps de lire mon message. Voila je suis en train de réaliser un chat en C
et je rencontre un probleme lorsque j'envoit plusieurs fois d'affiler un message a un meme client.
Exemple lorsque s j'envois la liste des personnes connectées au client se connectant:
send( socketClient,"/addName Ricco",15,0);
send( socketClient,"/addName Ric",13,0);
Si je fais cela alors le client au lieu de recevoir :
"/addName Ricco" puis ,"/addName Ric"
je recoit:
"/addName Ricco/addName Ric"
le client ne recoit donc q'une seul chaine au lieu de 2.
J'ai essayer de mettre une boucle "for" de 150000 entre les envoient de messages et ca marche donc je pense que le probleme vient du faite que le client n'a pas le temps de finir correctement le premier envoit avant que le deuxieme commence ou kkchose comme ca cependant c du "BRICOLAGE" comme solution et j'aimerai trouver une maniere d'attendre correctement ke le winsock soit libre avant de renvoyer des infos dessus.

PS: ca marche kan j'envoit des infos successive mais sur des winsock differents comme kan je redirige un message.

Merci d'avance pour vos réponses @+

N'abondonnez jamais !!!

3 réponses

cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
7 nov. 2003 à 21:53
Le fait que le client reçoive en même temps deux messages, tu n'y peux rien, c'est fait dans un niveau plus bas que ton programme, dans une couche TCP/IP.
Si tu veux identifier correctement les deux (ou plusieurs) chaines, il faut que tu les sépares, par exemple par un '\0'.

Kaid - kaid.fr.st
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
7 nov. 2003 à 21:56
Salut,
En TCP, tout ca est parfaitement normal, car TCP est un protocol dit "de flux".
Quand tu envoies 15 + 13 octets rapidement, rien ne te dis que tu recevra dabord 15 puis 13 octets. Si le buffer du serveur permet de tout lire d'un coup, le serveur le fera.

Essaye d'envoyer la liste des personnes en une seule fois.
0
Ricco666 Messages postés 4 Date d'inscription mercredi 4 juin 2003 Statut Membre Dernière intervention 27 janvier 2004
8 nov. 2003 à 00:35
Merci pour ces reponses. Effectivement je me demandais si j'allais pas faire un systeme pour tout recevoir d'un coup, je crois que dans ce cas la c la seul solution.

N'abondonnez jamais !!
0
Rejoignez-nous