在linux中,s類型文件是指“套接字文件(socket)”,它是一種特殊的文件,用于進程之間的通信;可以通過這個文件來初始化一種網(wǎng)絡協(xié)議,然后就可以通過一系列的函數(shù)來對這個網(wǎng)絡協(xié)議進行初始化、傳輸?shù)鹊炔僮鳌?/p>
本教程操作環(huán)境:linux5.9.8系統(tǒng)、Dell G3電腦。
Linux文件類型(b、c、d、l、s、-)
文件類型 | 說明 |
---|---|
b | 塊設備,是一些提供系統(tǒng)存取數(shù)據(jù)的接口設備,例如硬盤。 |
c | 字符設備,是一些串行端口的接口設備,例如鍵盤、鼠標、打印機、tty終端。 |
d | 目錄,類似于Windows的文件夾。 |
l |
鏈接文件,類似于Windows的快捷方式。 |
s | 套接字文件(socket),用于進程之間的通信。 |
– | 文件,分純文本文件(ASCII)和二進制文件(binary)。 |
socket套接字作為一種特殊的文件,可以通過這個socket來初始化一種網(wǎng)絡協(xié)議,然后就可以通過一系列的函數(shù)(write/read/accept)來對這個網(wǎng)絡協(xié)議進行初始化、傳輸?shù)鹊炔僮?/p>
socket定義
Socket是應用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口。在設計模式中,Socket其實就是一個門面模式,它把復雜的TCP/IP協(xié)議族隱藏在Socket接口后面,對用戶來說,一組簡單的接口就是全部,讓Socket去組織數(shù)據(jù),以符合指定的協(xié)議
socket在Linux內(nèi)核中的結(jié)構(gòu)
socket在內(nèi)核中其實就是一個結(jié)構(gòu)體。這個結(jié)構(gòu)體包含有ip、port、state、size等成員,這些成員都是用來初始化套接字的詳細信息的,但是我們無法直接使用這些成員。因此Linux提供了相應的接口函數(shù)給我調(diào)用,我們通過這些函數(shù)來初始化socket結(jié)構(gòu)體內(nèi)的成員
結(jié)構(gòu)體中
-
ip、port:初始化IP地址和端口號
-
state:當前網(wǎng)絡服務的狀態(tài)(監(jiān)聽/非監(jiān)聽)
-
size:最大可連接的數(shù)量
因為這些結(jié)構(gòu)體成員我們不可能直接操作,所以Linux提供了相應的接口函數(shù)給我們調(diào)用,來操作這些成員
-
bind():綁定ip與端口號
-
listen():監(jiān)聽
-
….等等還有很多其他函數(shù)