Ricco666
Messages postés4Date d'inscriptionmercredi 4 juin 2003StatutMembreDernière intervention27 janvier 2004
-
7 nov. 2003 à 21:33
Ricco666
Messages postés4Date d'inscriptionmercredi 4 juin 2003StatutMembreDernière intervention27 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.
cs_Kaid
Messages postés949Date d'inscriptionmardi 2 octobre 2001StatutMembreDernière intervention 8 juillet 20061 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'.
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 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.
Ricco666
Messages postés4Date d'inscriptionmercredi 4 juin 2003StatutMembreDernière intervention27 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.