Pourquoi l’événement TClientSocket.OnRead se déclenche deux fois pour un seul envoi de serveur

J’ai donc un TClientSocket qui doit recevoir plus de 10 Ko de données dans un événement OnRead. Mais lorsque l’événement est déclenché, il ne reçoit que 8 Ko de données, puis l’événement se déclenche à nouveau avec le rest des données.

Pourquoi cela se passe-t-il?

Parce que TCP est un protocole de stream, pas basé sur les messages. Vous devez recevoir tout ce que vous avez reçu, le fusionner avec un stream de données, puis parsingr le stream conformément au protocole utilisé.

Vous devez écrire un protocole convenu entre le serveur et le client qui signalera la fin du message par celui-ci pour parsingr le streaming afin de terminer les messages.