Bonjour,
Je suis en train de développer un " serveur " d'envois multiples de fichiers. Ces derniers sont soit binaires, soit textes. Ce détail est important pour le client puisque en réception, je n'utilise pas les mêmes méthodes d'écritures dans mes fichiers.
J'ai une boucle du côté client qui reçoit les messages spécifiant le type du fichier. Elle ne s'arrête seulement lorsque le nombre de fichiers effectivement reçus est égal au nombre de fichiers à recevoir.
J'ai constaté que, si dans la boucle du côté client il y a plus d'instruction que dans celle du côté serveur, la fonction recv() reçoit plusieurs messages envoyés par send().
Voici un exemple :
Je dispose de quatre fichiers : txt, bin, bin, txt dans cet ordre précis.
Si je fais simplement un envoi via send() côté serveur et une réception via recv() côté client, et que j'écris le contenu du buffer de réception dans un fichier à chaque tour de boucle, j'obtiens : txt, bin, bin, txt. En d'autres termes des messages corrects.
Si je mets plus d'instructions dans ma boucle côté client, je ne reçois que deux messages : txt, binbintxt.
J'ai utilisé des Sleep() côté serveur pour voir j'avais un problème de temps. Le résultat a été concluant, je reçois à nouveau txt, bin, bin, txt.
Il doit y avoir une autre solution, plus rapide, non ?
Partager