日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

长连接与短连接

發布時間:2024/6/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 长连接与短连接 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是長連接,什么是短連接?

什么是長連接,什么是短連接?

什么是長連接,什么是短連接?

什么是長連接,什么是短連接?

TCP/IP通信程序設計的豐富多樣性,剛接TCP/IP通信設計的人根據范例可以很快編出一個通信程序,據此一些人可能會認為TCP/IP編程很簡單。其實不然,TCP/IP編程具有較為豐富的內容。其編程的豐富性主要體現在通信方式和報文格式的多樣性上。

一、?通信方式 主要有以下三大類:

(一)SERVER/CLIENT方式

??1.一個Client方連接一個Server方,或稱點對點(peer to peer):

??2.多個Client方連接一個Server方,這也是通常的并發服務器方式。

??3.一個Client方連接多個Server方,這種方式很少見,主要 用于一個客戶向多個服務器發送請求情況。

(二)連接方式

1.長連接 ?Client方與Server方先建立通訊連接,連接建立后不斷開,然后再進行報文發送和接收。這種方式下由于通訊連接一直存在,可以用下面命令查看連接是否建立: netstat –f inet|grep 端口號(如5678)。 此種方式常用于點對點通訊。

?2.短連接 Client方與Server每進行一次報文收發交易時才進行通訊連接,交易完畢后立即斷開連接。此種方式常用于一點對多點通訊,比如多個Client連接一個Server.

(三)發送接收方式

1.異步 報文發送和接收是分開的,相互獨立的,互不影響。這種方式又分兩種情況:

?(1)異步雙工:接收和發送在同一個程序中,有兩個不同的子進程分別負責發送和接收

?(2)異步單工:接收和發送是用兩個不同的程序來完成。

???2.同步 報文發送和接收是同步進行,既報文發送后等待接收返回報文。同步方式一般需要考????????慮超時問題,即報文發上去后不能無限等待,需要設定超時時間,超過該時間發送方不再等待讀?返回報文,直接通知超時返回。

????實際通信方式是這三類通信方式的組合。比如一般書上提供的TCP/IP范例程序大都是同步?短連接的SERVER/CLIENT程序。

有的組合是基本不用的,比較常用的有價值的組合是以下幾種:

同步短連接Server/Client

同步長連接Server/Client

異步短連接Server/Client

異步長連接雙工Server/Client

異步長連接單工Server/Client

其中異步長連接雙工是最為復雜的一種通信方式,有時候經常會出現在不同銀行或不同城市之間的兩套系統之間的通信。比如金卡工程。由于這幾種通信方式比較固定,所以可以預 先編制這幾種通信方式的模板程序。

.報文格式 通信報文格式多樣性更多,相應地就必須設計對應的讀寫報文的接收和發送報文函數。

?(一)阻塞與非阻塞方式 

1.非阻塞方式
???讀函數不停地進行讀動作,如果沒有報文接收到,等待一段時間后超時返回,這種情況一般需要指定超時時間。 2.阻塞方式 如果沒有報文接收到,則讀函數一直處于等待狀態,直到有報文到達。

(二)循環讀寫方式

??1.一次直接讀寫報文在一次接收或發送報文動作中一次性不加分別地全部讀取或全部 發送報文字節。

??2.不指定長度循環讀寫這一般發生在短連接進程中,受網絡路由等限制,一次較長的報 文可能在網絡傳輸過程中被分解成了好幾個包。一次讀取可能不能全部讀完一次報文,這就需要循環讀報文,直到讀完為止。

??3.帶長度報文頭循環讀寫 這種情況一般是在長連接進程中,由于在長連接中沒有條件能夠判斷循環讀寫什么時候結束,所以必須要加長度報文頭。讀函數先是讀取報文頭的長度,再根據這個長度去讀報文.實際情況中,報頭的碼制格式還經常不一樣,如果是非ASCII碼的報文頭,還必須轉換成ASCII,常見的報文頭碼制有: (1)n個字節的ASCII碼 (2)n個字節的BCD碼 (3)n個字節的網絡整型碼 以上是幾種比較典型的讀寫報文方式,可以與通信方式模板一起預先提供一些典型的API讀寫函數。當然在實際問題中,可能還必須編寫與對方報文格式配套的讀寫API. 在實際情況中,往往需要把我們自己的系統與別人的系統進行連接,有了以上模板與API,可以說連接任何方式的通信程序都不存在問題。

什么時候用長連接,短連接?

長連接多用于操作頻繁,點對點的通訊,而且連接數不能太多情況,。每個TCP連接都需要三步握手,這需要時間,如果每個操作都是先連接,再操作的話那么處理速度會降低很多,所以每個操作完后都不斷開,次處理時直接發送數據包就OK了,不用建立TCP連接。例如:數據庫的連接用長連接, 如果用短連接頻繁的通信會造成socket錯誤,而且頻繁的socket 創建也是對資源的浪費。

而像WEB網站的http服務一般都用短鏈接,因為長連接對于服務端來說會耗費一定的資源,而像WEB網站這么頻繁的成千上萬甚至上億客戶端的連接用短連接會更省一些資源,如果用長連接,而且同時有成千上萬的用戶,如果每個用戶都占用一個連接的話,那可想而知吧。所以并發量大,但每個用戶無需頻繁操作情況下需用短連好。

總之,長連接和短連接的選擇要視情況而定。

?發送接收方式

1、異步?
報文發送和接收是分開的,相互獨立的,互不影響。這種方式又分兩種情況:?
(1)異步雙工:接收和發送在同一個程序中,由兩個不同的子進程分別負責發送和接收?
(2)異步單工:接收和發送是用兩個不同的程序來完成。?
2、同步?
報文發送和接收是同步進行,既報文發送后等待接收返回報文。 同步方式一般需要考慮超時問題,即報文發出去后不能無限等待,需要設定超時時間,超過該時間發送方不再等待讀返回報文,直接通知超時返回。

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

項目實例已存儲硬盤。

什么是長連接,什么是短連接?

?

貼個經典的

,

看完了就應該沒啥問題了

?

:?

TCP/IP

通信程序設計的豐富多樣性

,

剛接

TCP/IP

通信設計的人根據范例可以很快編出一個通信程

序,據此一些人可能會認為

TCP/IP

編程很簡單。其實不然,

TCP/IP

編程具有較為豐富的內容。其

編程的豐富性主要體現在通信方式和報文格式的多樣性上。

?

一、通信方式

?

主要有以下三大類

:??

(

)SERVER/CLIENT

方式

??

1.

一個

Client

方連接一個

Server

方,或稱點對點

(peer?to?peer)

??

2.

多個

Client

方連接一個

Server

方,這也是通常的并發服務器方式。

??

3.

一個

Client

方連接多個

Server

方,這種方式很少見,主要

?

用于一個客戶向多個服務器

發送請求情況。

??

(

)

連接方式

??

1.

長連接

?Client

方與

Server

方先建立通訊連接,連接建立后不斷開,然后再進行報文發

送和接收。

這種方式下由于通訊連接一直存在,

可以用下面命令查看連接是否建立:

?netstat?

f?inet|grep?

端口號

(

5678)

。

?

此種方式常用于點對點通訊。

?

?2.

短連接

?Client

方與

Server

每進行一次報文收發交易時才進行通訊連接,

交易完畢后立

即斷開連接。此種方式常用于一點對多點通訊,比如多個

Client

連接一個

Server.??

(

)

發送接收方式

?

1.

異步

?

報文發送和接收是分開的,相互獨立的,互不影響。這種方式又分兩種情況:

?

?(1)

異步雙工:接收和發送在同一個程序中,有兩個不同的子進程分別負責發送和接收

??

(2)

異步單工:接收和發送是用兩個不同的程序來完成。

?

?2.

同步

?

報文發送和接收是同步進行,

既報文發送后等待接收返回報文。

同步方式一般需要考慮

超時問題,

即報文發上去后不能無限等待,

需要設定超時時間,

超過該時間發送方不再等待讀返

回報文,直接通知超時返回。

?

實際通信方式是這三類通信方式的組合。比如一般書上提供的

TCP/IP

范例程序大都是同步短連

接的

SERVER/CLIENT

程序。

?

有的組合是基本不用的,比較常用的有價值的組合是以下幾種:

?

同步短連接

Server/Client?

同步長連接

Server/Client??

異步短連接

Server/Client??

異步長連接雙工

Server/Client??

異步長連接單工

Server/Client??

其中異步長連接雙工是最為復雜的一種通信方式,

有時候經常會出現在不同銀行或不同城市

之間的兩套系統之間的通信。比如金卡工程。由于這幾種通信方式比較固定,所以可以預

?

先編

制這幾種通信方式的模板程序。

?

.

報文格式

?

通信報文格式多樣性更多,

相應地就必須設計對應的讀寫報文的接收和發送報文函

數。

??

(

)

阻塞與非阻塞方式

?

??

1.

非阻塞方式

??

讀函數不停地進行讀動作,

如果沒有報文接收到,

等待一段時間后超時返回,

這種情況一般需要

指定超時時間。

?2.

阻塞方式

?

如果沒有報文接收到,

則讀函數一直處于等待狀態,

直到有報文到

達。

??

(

)

循環讀寫方式

??

1.

一次直接讀寫報文在一次接收或發送報文動作中一次性不加分別地全部讀取或全部

?

發送報文

字節。

??

2.

不指定長度循環讀寫這一般發生在短連接進程中,受網絡路由等限制,一次較長的報

?

文可能

在網絡傳輸過程中被分解成了好幾個包。

一次讀取可能不能全部讀完一次報文,

這就需要循環讀

報文,直到讀完為止。

?

?3.

帶長度報文頭循環讀寫

?

這種情況一般是在長連接進程中,

由于在長連接中沒有條件能夠判斷

循環讀寫什么時候結束,

所以必須要加長度報文頭。

讀函數先是讀取報文頭的長度,

再根據這個

長度去讀報文

.

實際情況中,報頭的碼制格式還經常不一樣,如果是非

ASCII

碼的報文頭,還必

須轉換成

ASCII,

常見的報文頭碼制有:

?(1)n

個字節的

ASCII

?(2)n

個字節的

BCD

?(3)n

字節的網絡整型碼

?

以上是幾種比較典型的讀寫報文方式,可以與通信方式模板一起預先提供一

些典型的

API

讀寫函數。

當然在實際問題中,

可能還必須編寫與對方報文格式配套的讀寫

API.?

實際情況中,往往需要把我們自己的系統與別人的系統進行連接,有了以上模板與

API,

可以說

連接任何方式的通信程序都不存在問題。

轉載于:https://www.cnblogs.com/arctictern/p/6632701.html

總結

以上是生活随笔為你收集整理的长连接与短连接的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。