2016-07-22 9 views
0

Nehmen wir an, ich verwende Winsock shutdown(s, SD_RECEIVE) für TCP.
Was passiert, wenn der Peer nach dem Herunterfahren Pakete sendet.Was passiert, wenn Shutdown-Socket mit SD_RECEIVE, aber Peer sendet Paket? (Winsock)

Laut MSDN,
https://msdn.microsoft.com/en-us/library/windows/desktop/ms740481.aspx

Für TCP-Sockets, wenn noch Daten der Warteschlange auf der Socket empfangen zu warten, oder Daten kommen anschließend die Verbindung zurückgesetzt wird, da die Daten nicht sein können an den Benutzer geliefert.

Mit "reset" bedeutet das, dass RST vom lokalen TCP zum Peer gesendet wird? was wiederum bedeutet, dass es kein ordentliches Herunterfahren geben wird?

Antwort

1

Das ist es, aber nur in Windows. Unter UNIX werden die Pakete bestätigt und verworfen. Unter Linux werden sie quittiert und gepuffert, was letztendlich den Absender blockiert.

+0

Vielen Dank, Haben Sie eine Referenz für mehr lesen vielleicht? – EnDorphin

+0

Dies ist das Ergebnis meiner eigenen Tests während des Schreibens von E.J. Pitt, * Grundlegende Vernetzung in Java, * Springer-Verlag. – EJP

+0

Fabelhaft. Danke für die Referenz! Ich habe noch eine Frage. Im obigen Zitat steht auch "wenn sich noch Daten in der Warteschlange befinden, die darauf warten, empfangen zu werden". Bedeutet dies, dass RST zu seinem Peer gesendet wird, unabhängig davon, ob der Peer irgendetwas tut? – EnDorphin