Socket套接字是什麼

2021-08-03 05:32:55 字數 1982 閱讀 1831

應用層通過傳輸層進行資料通訊時,tcp和udp會遇到同時為多個應用程式程序提供併發服務的問題。多個tcp連線或多個應用程式程序可能需要 通過同乙個tcp協議埠傳輸資料。為了區別不同的應用程式程序和連線,許多計算機作業系統為應用程式與tcp/ip協議互動提供了稱為套接字 (socket)的介面,區分不同應用程式程序間的網路通訊和連線。

生成套接字,主要有3個引數:通訊的目的ip位址、使用的傳輸 層協議(tcp或udp)和使用的埠號。socket原意是「插座」。通過將這3個引數結合起來,與乙個「插座」socket繫結,應用層就可以和傳輸 層通過套接字介面,區分來自不同應用程式程序或網路連線的通訊,實現資料傳輸的併發服務。

socket可以看成在兩個程式進行通訊連線中的乙個端點,乙個程式將一段資訊寫入socket中,該socket將這段資訊傳送給另外乙個socket中,使這段資訊能傳送到其他程式中。如圖1:

host a上的程式a將一段資訊寫入socket中,socket的內容被host a的網路管理軟體訪問,並將這段資訊通過host a的網路介面卡傳送到host b,host b的網路介面卡接收到這段資訊後,傳送給host b的網路管理軟體,網路管理軟體將這段資訊儲存在host b的socket中,然後程式b才能在socket中閱讀這段資訊。

要通過網際網路進行通訊,至少需要一對套接字,乙個執行於客戶機端,稱之為clientsocket,另乙個執行於伺服器端,稱之為serversocket。     

根據連線啟動的方式以及本地套接字要連線的目標,套接字之間的連線過程可以分為三個步驟:伺服器監聽,客戶端請求,連線確認。     

伺服器監聽:是伺服器端套接字並不定位具體的客戶端套接字,而是處於等待連線的狀態,實時監控網路狀態。

客戶端請求:是指由客戶端的套接字提出連線請求,要連線的目標是伺服器端的套接字。為此,客戶端的套接字必須首先描述它要連線的伺服器的套接字,指出伺服器端套接字的位址和埠號,然後就向伺服器端套接字提出連線請求。

連 接確認:是指當伺服器端套接字監聽到或者說接收到客戶端套接字的連線請求,它就響應客戶端套接字的請求,建立乙個新的執行緒,把伺服器端套接字的描述發給客 戶端,一旦客戶端確認了此描述,連線就建立好了。而伺服器端套接字繼續處於監聽狀態,繼續接收其他客戶端套接字的連線請求。

要通過internet進行通訊,至少需要一對套接字,其中乙個執行在客戶端,稱之為clientsocket,另乙個執行於伺服器端面,稱為serversocket。根據連線啟動的方式以及本地要連線的目標,套接字之間的連線過程可以分為三個步驟:伺服器監聽、客戶端請求、連線確認。

伺服器監聽是指服務端套接字並不定位具體的客戶端套接字,而是處於等待連線的狀態,實時監控網路狀態。

客戶端請求是由客戶端的套接字提出連線請求,要連線的目標是伺服器端套接字。為此,客戶端的套接字必須首先描述它要連線的伺服器的套接字,指出伺服器套接字的位址和

埠號,然後再向伺服器端套接字提出連線請求。

連線確認是當伺服器端套接字監聽到或者說接收到客戶端套接字的連線請求時,它就響應客戶端套接字的請求,建立乙個新的執行緒,把伺服器端套接字的資訊傳送給客戶端,一旦客戶端確認了此連線,連線即可建立。而伺服器端繼續處於

監聽狀態,繼續接收其他客戶端的連線請求。

使用套接字進行資料處理有兩種基本模式:同步和非同步。

同步模式:

同步模式的特點是在通過socket進行連線、接收、傳送資料時,客戶機和伺服器在接收到對方響應前會處於阻塞狀態,即一直等到收到對方請求才繼續執行下面的語句。可見,同步模式只適用於資料處理不太多的場合。當程式執行的任務很多時,長時間的等待可能會讓使用者無法忍受。

非同步模式:

非同步模式的特點是在通過socket進行連線、接收、傳送操作時,客戶機或伺服器不會處於阻塞方式,而是利用callback機制進行連線、接收、傳送處理,這樣就可以在呼叫傳送或接收的方法後直接返回,並繼續執行下面的程式。可見,非同步套接字特別適用於進行大量資料處理的場合。

使用同步套接字進行程式設計比較簡單,而非同步套接字程式設計則比較複雜。

socket是什麼?套接字是什麼?

網路程式設計就是編寫程式使兩台聯網的計算機相互交換資料。這就是全部內容了嗎?是的!網路程式設計要比想象中的簡單許多。那麼,這兩台計算機之間用什麼傳輸資料呢?首先需要物理連線。如今大部分計算機都已經連線到網際網路,因此不用擔心這一點。在此基礎上,只需要考慮如何編寫資料傳輸程式。但實際上這點也不用愁,因...

什麼是套接字Socket

q 什麼是套接字 socket 套接字 socket 是什麼意思?應用層通過傳輸層進行資料通訊時,tcp和udp會遇到同時為多個應用程式 程序提供併發服務的問題。多個tcp連線或多個應用程式程序可能需要通過同乙個tcp協議埠傳輸資料。為了區別不同的應用程式程序和連線,許多計算機作業系統為應用程式與t...

什麼是套接字 Socket

應用層通過傳輸層進行資料通訊時,tcp和udp會遇到同時為多個應用程式程序提供併發服務的問題。多個tcp連線或多個應用程式程序可能需要 通過同乙個tcp協議埠傳輸資料。為了區別不同的應用程式程序和連線,許多計算機作業系統為應用程式與tcp ip協議互動提供了稱為套接字 socket 的介面,區分不同...