2011-04-19 75 views
2

我不太明白持久連接是如何工作的。理解持久連接http連接問題#

所以keepalive屬性默認設置,這應該保持我的連接打開,據我所知。

所以現在我通過HTTPWebRequest上的POST發送數據。 但是我每次發送東西給收件人都會這樣做。

所以它是這樣的: 從客戶端到服務器的POST數據,對帖子的響應被返回。

但接下來我只是發送另一個POST,而不是使用已打開的連接。所以我覺得我發送的比實際上要多。 我不能只打開一次連接,然後繼續通過此連接進行通信?

我很抱歉,因爲我對這個主題不甚瞭解,但這是我第一次真正使用網絡協議。

預先感謝

丹尼爾

回答

1

KeepAlive加到HTTP協議,以改善服務器端性能。

HTTP通常是一種無狀態協議。所有狀態都保存爲Cookie或服務器會話。如果KeepAlive設置爲true,則客戶端和服務器可能會保持它們的基本TCP連接處於活動狀態。

通常爲KeepAlive設置超時,以便如果客戶端沒有提出任何其他請求,則關閉此連接。

此功能通常在不同的平臺上以不同的方式實現,例如,我看到了Java實現的問題,他們不尊重超時,服務器關閉連接,因此客戶端嘗試重新連接失敗,因爲它假定連接仍處於打開狀態。

請參閱RFC文檔here

0

如果服務器支持連接,您可以重新使用連接.... 包括您和服務器之間的任何代理。哪個地方有時會跌倒。它被加入到HTTP 1.0並正式添加到1.1中。

基本上,您的客戶端會問「我可以保持此連接處於活動狀態」並帶有一個特殊的標頭,那麼如果服務器支持它,它會回覆「yes」,然後客戶端可以在同一套接字上發送更多請求。

您的客戶端代碼也必須支持此功能。 .Net應該沒問題。