Wann wird CAsyncSocket::OnClose aufgerufen?
-
Hi,
wann wird "CAsyncSocket::OnClose" aufgerufen? Wenn auf TCP Ebene die Verbindung geschlossen wird (FIN received)?
Momentan wird nämlich hier die Verbindung jedes Mal nach nur einer Anfrage an den Webserver wieder geschlossen.
D.h. wenn ich z.B. eine weitere Seite auf dem Webserver aufrufen möchte, dann muss die komplette Verbindung TCP etc. wieder neu aufgebaut werden. Kann man das irgendwie umgehen, weil laut HTTP 1.1 müsste so eine Verbindung ja bestehen bleiben (eine gewisse Zeit lang)?Unterstützt CAsyncSocket::OnClose diesen Mechanismus?
Gruß
Konrad
-
Möglicherweise hat es etwas mit dem HTTP Keep Alive zu tun?
-
Siehe theta's Antwort und hier:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.htmlClient sendet
Connection: keep-alive
um den Wunsch nach einer dauerhaften Verbindung kund zu tun.
Server kann aber trotzdemConnection: close
antworten, falls er nichts Dauerhaftes will.
-
EOP schrieb:
Siehe theta's Antwort und hier:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.htmlClient sendet
Connection: keep-alive
um den Wunsch nach einer dauerhaften Verbindung kund zu tun.
Server kann aber trotzdemConnection: close
antworten, falls er nichts Dauerhaftes will.
Aber wenn der Client einen solchen Header keep-alive mitschickt, dann wird CAsyncSocket::OnClose nicht aufgerufen (nach jedem Zugriff auf die Page)?
Oder muss ich da als Server etwas beachten? Letztendlich ist es ja so, dass diese OnClose() Funktion, eine virtuelle Funktion der CAsyncSocket Klasse ist; und ich als Server den Zugriff bzw. den Aufruf ja nicht "verhindern" kann; wenn ich diese Methode installiert habe.
-
Guckst du hier:
http://askldjd.wordpress.com/2010/09/04/how-to-handle-casyncsocketonclose-gracefully/(4. Ergebnis von Google
)