Je sais que TCP fournit une transmission de données de type flux, mais la question principale est - quelles situations peuvent survenir lors de l'envoi de données via TCP?
1. Le message peut être divisé en N blocs pour correspondre à la taille MTU.
2. Deux messages peuvent être lus dans 1 appel recv.Fragmentation TCP
Peut-il y avoir la prochaine situation?
MTU par exemple 1500 octets.
Les appels clients envoient avec des données de 1498 octets.
Les appels clients envoient avec 100 octets de données.
Le serveur appelle recv et reçoit des données de 1500 octets.
Le serveur appelle recv et reçoit des données de 98 octets. Donc, il finira avec la situation où 2 octets du second client seront reçus dans le premier serveur recv.
Mon protocole défini comme foolows:
4 octets - longueur de données
de contenu de données.
Je me demande si je peux arriver à une situation où 4 octets (longueur de données) seront divisés en 2 morceaux?
Même si elle ne le diviser, est-il une différence. Après toutes vos données seront correctement relayées à votre destination, garanti par TCP. http://en.wikipedia.org/wiki/Transmission_Control_Protocol – DumbCoder
Il n'y a pas de "message" en ce qui concerne TCP. Si vous avez un concept de message dans votre code, TCP n'en sait absolument rien. –