Ich arbeite an TCP-Client-Server-Anwendung mit C++. Third-Party-Lib sind jetzt in diesem Projekt erlaubt.Gepolsterte Daten in recv() api
Hier der Austausch zwischen Client-Server dauert mit gut definierten Protokoll-Format. Sobald der Client das Paket erhält, wird es es für die Analyse senden. Ich habe Protokoll-Manager, der kümmert sich um die Analyse-Aktivität.
Ich habe folgende Zweifel Wenn die Daten bei Client aus dem Netzwerk ankommen, puffert das Betriebssystem es, bis die Anwendung die Funktion recv() aufruft.
So zwei Nachrichten msg1 und msg2 kommt in den Puffer ein Aufruf an recv wird msg1 + msg2 zurückgeben. Jetzt kann dies zum Fehlschlagen der Parsing-Aktivität führen.
Meine Abfragen 1. ob oben genannte Annahme korrekt ist oder nicht? 2. Wenn die oben genannte Annahme richtig ist, wie kann dieses Problem gelöst werden.
richtig lesen, wie wir in tcp arbeiten, uns geben PLZ Lösung die Anzahl der Pakete zu finden, die wir sind Empfangen mit der recv() API.Auch wird der Client immer die volle Antwort erhalten oder es besteht die Möglichkeit, die Hälfte der Antwort in einer Sortierung und die andere Hälfte in einer anderen Sortierung zu erhalten (zum Beispiel abhängig vom Puffer, den wir für die recv() API definiert haben) – Revathy
Es ist durchaus möglich, halbe Pakete zu erhalten - TCP geht davon aus, dass Sie einen einzelnen Datenstrom übertragen möchten. Jede Struktur dieser Daten muss aus dem Protokoll herauskommen (Datensatzstruktur, Längenfelder oder Escape-Zeichen). Welches Protokoll implementierst du? –
TCP/IP-Protokoll – Revathy