sockt套接字之系統呼叫的那些事兒

2021-06-16 04:42:41 字數 949 閱讀 4745

套接字的特性由三個屬性確定:域(domain),型別和協議。

建立套接字

socket系統呼叫建立乙個套接字並返回乙個描述符,該描述符可以用來訪問套接字。

套接字位址

每個套接字域都有其自己的位址格式。對於af_unix域套接字來說,他的位址由結構sockaddr_un來描述,該結構定義在標頭檔案sys/

命名套接字

想要讓通過socket呼叫建立的套接字可以被其他程序使用,伺服器程式就必須給該套接字命名 。af_unix套接字會用到乙個檔案系統的路徑名,af_inet套接字會關聯到乙個ip埠號。

bind系統呼叫把引數address中的位址分配給與檔案描述符socket關聯的未命名套接字。

建立套接字佇列

為了能夠在套接字上接受進入的連線,伺服器程式必須建立乙個佇列來儲存未處理的請求。相應的系統呼叫是listen。

引數backlog常常設定為5,表示佇列長度是5.

接受連線

一旦伺服器程式建立並命名套接字後,就可以用accept系統呼叫來等待客和建立對該套接字的連線。

accept系統只有當有客戶程式試圖連線到有socket引數指定的套接字上時才返回。ac cept函式將建立乙個新套接字來與該客戶程序進行通訊,並且返回新套接字的描述符。連線客戶的位址將放在address引數指向的socktaddr結構中。如果我們不關係客戶的位址,可以設定address為空指標。

請求連線

客戶程式通過在乙個未命名套接字和伺服器監聽套接字之間建立連線的方法來連線到伺服器。connect系統呼叫就是完成這個功能;

如果不能立刻建立連線,connect呼叫將阻塞一段不確定的時間。一旦這個超時時間到達,連線將被放棄,connect呼叫失敗。

程序間的通訊之套接字

應用層 表示層會話層 傳輸層 決定傳輸特性 網路層 決定傳輸方式 資料鏈路層 封裝資料報 軟體介面卡 物理層傳輸層網路 socket 插座 通訊需要1對1的意思 tcp 傳輸控制協議 使用與傳輸質量要求較高,傳輸大量資料的通訊通訊 高可靠性 udp 效率高,實時性 建立套接字 int fd sock...

linux系統中的程序通訊 套接字

套接字不僅支援本地無關的兩個程序之間的雙向通訊,而且支援跨網路的,執行在不同機器的程序間的通訊。可以通過int socket int domain,int type,int protocol 建立套接字,通過int close int socket 關閉 銷毀 套接字,通過int shutdown ...

套接字學習之tcp連線的建立

需要重新拿起書本複習複習,所以就有了下面的博文,希望我能堅持學習,堅持努力。tcp連線的建立總的來說就是乙個跟 系統類似的套路 對於伺服器 1.建立乙個socket用於通訊 類似listenfd socket af inet,sock stream,0 2.繫結乙個位址好讓別人能找到你 類似 str...