幾個星期前,我寫了一個小程序,它創建了一個到apache webserver的套接字併發出請求。
當時我並不知道這個Web服務器有一個5秒的KeepAliveTimeout。
我第一次請求後,我等了1分鐘。在此之後,我想重新使用我的第一個套接字作爲另一個web服務器請求,但出現錯誤。tcp和apache keepalivetimouts
從「Beej指南網絡編程」(http://beej.us/guide/bgnet/output/html/multipage/syscalls.html#sendrecv)我知道,如果recv的返回0,然後對方已經關閉了連接:
Wait! recv() can return 0. This can mean only one thing: the remote side has closed
the connection on you! A return value of 0 is recv()'s way of letting you know this
has occurred.
我的問題,現在是:
是什麼在KeepAliveTimeout結束時發送Apache - FIN或RST數據包?
我知道在這種情況下使用tcp連接處理2個不相關的http請求,可能是 不是最好的。但爲了更多地理解tcp,下一個問題是:
在我第一次成功的http請求之後,在通過同一個套接字發送下一個http請求之前,會不知何故有可能獲知有關keepalivetimeout tcp套接字終止的消息服務器除了從下一個recv()調用接收0?
非常感謝提前
沃爾夫岡