Un petit conseil pour winsock

Hell Dom Messages postés 11 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 7 mars 2005 - 1 mars 2004 à 16:58
Hell Dom Messages postés 11 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 7 mars 2005 - 2 mars 2004 à 01:24
je suis actuellement en stage et je doit déveloper une applic client/serveur...
Je veux travailer avec des threads est des sockets synchrones
(car je suis plus a l'aise que dans la programmation des sockets asynchrones, Oui monsieur j'ai été nourris au sein unix)

j'utilise la classe SOCKET (légèrement enrobé) car selon mon bouquin
(atelier visual c++ 6.0) la classe Csocket contient des résidu de win 16...

ca c'était pour l'intro...

Si je fait 2 send succesif coté serveur, j'ai des problèmes lors des recv cotés client bla bla bla vous voyez ce que je veux dire...

Deux idées me viennent a l'esprit pour solutionner le problm:

- 1 Utilisation d'ack applicatif(mon boss a pas l'air chaud)

- 2 Faire des recv de 1 et scrupter après mes séparateurs
(tous mes msg termine par un caract. #)

La solution 1 double mon nbre de msg

La solution 2 (ben si j'ai un msg de 5000 bytes, faire 5000 fois appel a la fonction recv me parrait pas inteligent point de vue performance)

Voilà j'aimerais votre avis sur la question, solution1, 2 ou autres ?

Merci d'avance pour vos réponses

4 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
1 mars 2004 à 17:16
Salut,
"j'ai des problèmes lors des recv cotés client bla bla bla vous voyez ce que je veux dire..."
non? explique les.
0
Hell Dom Messages postés 11 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 7 mars 2005
1 mars 2004 à 22:35
bonsoir,

dsl pour le blabla, je m'explique.
Si je fait du côté du serveur, 2 send et que j'envoi "SALUT "+"MEC". Du coté du client mon premier recv recoit "SALUT MEC" et mon second rien

-->En TCP, tout ca est parfaitement normal, car TCP est un protocol dit "de flux".<-- :big) je suis vraiment tombé sur le bon gars car cette phrase est de toi

Les msg que je reçois sont de tailles différentes. Donc je me demandais quelle était la meilleure solution (voir 1er post) pour éviter que je lise 2 msg à la fois.

voilà j'espère avoir été plus clair
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
1 mars 2004 à 23:03
Salut,
si tu veux 2 send = 2 recv, il faut utiliser le protocol UDP.
En TCP, il faut se debrouiller autrement.
Puisque tes messages se finissent tous par un caractere special cela ne devrait pas etre trop dur d'extraire chaque message du buffer de reception et de traiter le tout.
Une autre solution serait de reserver les 4 premier octet d'un message pour y spécifier la taille du paquet. Cela me semble plus facile pour savoir si on a recu un seul paquet ou plusieurs.

Moi je ferais comme ca:
coté client, tu appeles une fois recv, ensuite tu analyses ce que tu as recu pour determiner combien de messages tu as recu. Si tu n'en as recu qu'un, il faut reappeler recv, si tu as recu les 2, il faut les extraires du buffer et les traiter séparement.
0
Hell Dom Messages postés 11 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 7 mars 2005
2 mars 2004 à 01:24
OK, merci ca ma donnée quelques idées
0
Rejoignez-nous