-
problème de sockets
bonjour,
je fais un programme en delphi utilisant des sockets
cependant j'ai un problème lorsque j'envoie des chaines importantes avec "SendText" :
le client devrait recevoir le message en une seule fois, mais malheureusement il le reçoit en plusieurs petits bouts, ce qui fait planter mon programme
par exemple, si j'envoie la chaine :
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
et que mon client fait "showmessage(Socket.receivetext)",
oh lieu de m'afficher cette chaine en une fois, le client va m'afficher 5 messages :
-aaaaaaa
-aaaaaaaaaa
-aaaaaaaaa
-aaaaaaa
-aaaaaa
je cherche mon erreur depuis je ne sais combien de temps mais je n'ai rien trouvé :(
pourriez-vous m'aider ?
merci d'avance
-
Il n'y a pas d'erreur, c'est le comportement normal des sockets : tu dois travailler par buffer à remplir quand tu reçois quelque chose, et puis voir si ton buffer contient un envoi terminé, sinon le laisser comme ça et continuer à le remplir au prochain read.
-
D'où l'intérêt d'utiliser des librairies de code plus optimisées qui traitent déjà ce problème. Par exemple, Indy possède la méthode WriteLn et ReadLn qui permettent d'envoyer et de lire une ligne en "une seule fois".
-