1. 程式人生 > >什麼是長連線和短連線(不看後悔,一看必懂)

什麼是長連線和短連線(不看後悔,一看必懂)

在日常專案中,大多的時候我們用的是短連線,一個請求過來,一個執行緒處理完該請求,執行緒被執行緒池回收,這個請求就關閉了.雖然這能滿足很大部分的需求,但是也有些問題,比如說:如果客戶端發的請求比較多,比較頻繁,服務端就會忙於建立連線處理請求,由於服務端的執行緒數也有限,併發比較大的話有可能會造成服務端的崩潰.那有沒有一種辦法使連線少一些,讓一個執行緒可以處理多個連線?長連線的出現就是為了解決上面的問題

長連線

client與server先建立連線以後不斷開,然後進行通訊(也就是傳送報文)。這種方式由於連線一直存在,所以被稱為長連線。經常用於P2P通訊。

建立連線——資料傳輸…(保持連線)…資料傳輸——關閉連線

短連線

Client與server每進行一次通訊(報文)才發起連線,交易完畢後 立即斷開連線。此方式常用於一點對多通訊。C/S通訊用得比較多。

建立連線——資料傳輸——關閉連線…建立連線——資料傳輸——關閉連線

 

長連線與短連線的使用時機

長連線多用於操作頻繁,點對點的通訊,而且連線數不能太多的情況。每個 TCP連線的建立都需要三次握手,每個TCP連線的斷開要四次握手。如果每次 操作都要建立連線然後再操作的話處理速度會降低,所以每次操作下次操作 時直接傳送資料就可以了,不用再建立TCP連線。例如:資料庫的連線用長連線,如果用短連線頻繁的通訊會造成socket錯誤,頻繁的socket建立也是對資源的浪費。

在具體的網路應用中,smtp,pop3,telnet,網路遊戲應用一般是長連線

短連線

web網站的http服務一般都用短連線。因為長連線對於伺服器來說要耗費一定 的資源。像web網站這麼頻繁的成千上萬甚至上億客戶端的連線用短連線更省 一些資源。試想如果都用長連線,而且同時用成千上萬的使用者,每個使用者都 佔有一個連線的話,可想而知伺服器的壓力有多大。所以併發量大,但是每個使用者又不需頻繁操作的情況下需要短連線。