2009-04-16 188 views
0

我正在用C++實現一個HTTP緩存代理服務器,我完成了大部分工作,但是我被困在一個點上。
我在做什麼是創建每個線程與套接字來處理每次來自瀏覽器的請求來。我解析請求,檢查它在緩存中的可用性,如果沒有找到它轉發它結束WWW服務器。在這兩種情況下,我寫的連接套接字接收到的響應。現在的問題是,除非我關閉套接字,否則瀏覽器不會假定傳輸完成並等待無限期。
這種方式我不能使用套接字進行多個連接,換句話說,我無法支持持續連接。
任何幫助將不勝感激..支持我的代理服務器中的持久HTTP連接

感謝,

回答

2

什麼頭你發送回客戶端?

你應該包括:

Content-Length: ... 
Keep-Alive: timeout=..., max=... 
Connection: Keep-Alive 

尤其是,讓客戶知道有多少數據讀取Content-Length頭與持久連接是必不可少的。見section 8.1.2.1 of RFC 2616

另外,如果你想告訴客戶端斷開連接,發送:

Connection: close 
0

現在問題之前,除非我關閉套接字,瀏覽器不承擔 轉移完成並無限期地等待。

沒錯。 HTTP 1.1默認使用Keep-Alive。

這樣,我不能使用套接字的一個以上的連接,換句話說,我不能 支持持久連接。

我不知道我理解你,因爲你擁有的持久連接是持久連接。

相關問題