close () Socket direkt nach send (): unsicher?

Ist es klug/sicher close() eine Buchse direkt nach der letzten send()?

Ich weiß, dass TCP soll, um zu versuchen, um alle verbleibenden Daten in den sende-Puffer auch nach dem schließen des socket, aber kann ich die wirklich zählen?

Ich werde dafür sorgen, dass es keine verbleibenden Daten im Puffer vorhanden, so dass keine RST gesendet wird, nach meiner Nähe.


In meinem Fall, der in der Nähe ist eigentlich die Letzte Anweisung der code vor dem Aufruf exit().

Wird der TCP-stack wirklich weiter versuchen und übertragen die Daten auch nach dem Prozess senden es beendet hat? Ist das so zuverlässig wie das warten auf einen beliebigen timeout-mich vor dem Aufruf close() durch Einstellung SO_LINGER?

Ist, tun die gleiche TCP-timeouts gelten, oder sind Sie kürzer? Mit einem großen sende-Puffer und eine langsame Verbindung, die Zeit, um tatsächlich alle gepufferten Daten könnten beträchtlich sein, nachdem alle.


Ich bin überhaupt nicht für Sie benachrichtigt werden, das Letzte byte gesendet; ich will nur diese zu kommen die auf dem remote-host, so zuverlässig wie möglich.

Application layer Bestätigungen sind keine option (das Protokoll ist HTTP, und ich Schreibe einen kleinen server).

InformationsquelleAutor der Frage lxgr | 2012-01-15

Schreibe einen Kommentar