APP開發實戰37-短連接與長連接

9 短連接與長連接

9.1短連接

短連接是指通訊雙方有數據交互時,就建立一個連接,數據發送完成后,則斷開此連接,即每次連接只完成一項業務的發送。

短連接操作步驟:?連接→數據傳輸→關閉連接

9.2長連接

長連接是相對于通常的短連接而說的,也就是長時間保持客戶端與服務端的連接狀態,且在一個連接上可以連續發送多個數據包,在連接保持期間,如果沒有數據包發送,需要雙方發鏈路檢測包,以維持此連接。

長連接操作步驟:

連接→數據傳輸→保持連接(心跳)→數據傳輸→保持連接(心跳)→……→關閉連接

在長連接中一般是沒有條件能夠判斷讀寫什么時候結束,所以必須要加長度報文頭。讀函數先是讀取報文頭的長度,再根據這個長度去讀相應長度的報文。

HTTP1.1規定了默認保持長連接(HTTP persistentconnection ,也有翻譯為持久連接),數據傳輸完成了保持TCP連接不斷開(不發RST包、不四次握手),等待在同域名下繼續用這個通道傳輸數據。


上圖中的Keep-Alive:timeout=20,表示這個TCP通道可以保持20秒。另外還可能有max=XXX,表示這個長連接最多接收XXX次請求就斷開。對于客戶端來說,如果服務器沒有告訴客戶端超時時間也沒關系,服務端可能主動發起四次握手斷開TCP連接,客戶端能夠知道該TCP連接已經無效。

9.3使用場景

短連接用于并發量大,但每個用戶無需頻繁操作情況,如WEB網站的HTTP服務。

因為長連接對于服務端來說會耗費一定的資源,而像WEB網站這么頻繁的成千上萬甚至上億客戶端的連接用短連接會更省一些資源,如果用長連接,而且同時有成千上萬的用戶,如果每個用戶都占用一個連接的話,那可想而知吧。

長連接多用于操作頻繁、點對點的通訊,如:PUSH和IM等功能。

每個TCP連接都需要三步握手,這需要時間,如果每個操作都是短連接,再次操作的話還需重新建立連接,那么處理速度會降低很多,所以每個操作完后都不斷開,下次處理時直接發送數據包就OK了,不用建立TCP連接。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容