套接字(socket)基本知識與工作原理

2021-07-27 18:27:49 字數 1315 閱讀 8957

socket通常也稱作「套接字」,用於描述

ip位址和埠,是乙個通訊鏈的控制代碼。(其實就是兩個程式通訊用的。)

socket用於在兩個基於

tcp/ip

協議的應用程式之間相互通訊。最早出現在

unix

系統中,是

unix

系統主要的資訊傳遞方式。在

windows

系統中,

socket

稱為winsock

。兩個基本概念:客戶方和服務方。當兩個應用之間需要採用

socket

通訊時,首先需要在兩個應用之間(可能位於同一臺機器,也可能位於不同的機器)建立

socket

連線,發起呼叫連線請求的一方為客戶方,接受呼叫連線請求的一方成為服務方。客戶方和服務方是相對的,同乙個應用可以是客戶方,也可以是服務方。

在客戶方呼叫連線請求之前,它必須知道服務方在**。所以需要知道服務方所在機器的

ip位址或機器名稱,如果客戶方和服務方事前有乙個約定就好了,這個約定就是

port

(埠號)。也就是說,客戶方可以通過服務方所在機器的

ip位址或機器名稱和埠號唯一的確定方式來呼叫服務方。在客戶方呼叫之前,服務方必須處於偵聽狀態,偵聽是否有客戶要求建立連線。一旦接到連線請求,服務方可以根據情況建立或拒絕連線。連線方式有兩種,同步方式(

blocking

)和(noblocking).

客戶方傳送的訊息可以是文字,也可以是二進位制資訊流。當客戶方的訊息到達服務方埠時,會自動觸發乙個事件(

event

),服務方只要接管該事件,就可以接受來自客戶方的訊息了。

二、socket有兩種型別:

三、socket一般應用模式(服務端和客戶端)

服務端的socket(

至少需要兩個

):

客戶端的socket

socket通訊基本流程圖

socket的通訊過程

服務端:

客戶端:

伺服器端接到連線請求後,產生乙個新的socket

(埠大於

1024

)與客戶端建立連線並進行通訊,原偵聽

socket

繼續偵聽。

套接字socket(基礎網路知識)

網路程式設計 首先既然提到了網路程式設計,不得不提到計算機網路,我們雖然不用像專門學習計算機網路的人那樣學習的那麼細緻,但是該了解的還是要了解。網絡卡 為了將計算機加入網際網路,每台機器都應該有網絡卡,mac位址是全球唯一的,具體怎麼檢視mac位址先開啟命令列 輸入如下指令 ipconfig all...

Linux下socket程式設計基本知識

本文件主要講解了linux下socket程式設計的一些基本知識,主要包括套接字和位元組序的概念,以及一些常用的結構體和函式。linux網路程式設計 linux網路程式設計 人工智慧物聯網 linux中的網路程式設計通過socket介面實現,socket既是一種特殊的io,提供對應的檔案描述符。乙個完...

套接字的秘密 socket與sock

那麼如何把套接字和檔案聯絡起來呢?答案就是通過下面這張圖。其中task struct表示乙個程序,files struct中的fd array表示該程序開啟的所有描述符,對於套接字來說,與其他型別檔案的區別就是最終f op指向的是socket file ops。不過,可以看到,這裡的socket f...