溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

linux sock文件指的是什么

發(fā)布時(shí)間:2023-04-12 11:02:41 來源:億速云 閱讀:159 作者:iii 欄目:建站服務(wù)器

這篇“l(fā)inux sock文件指的是什么”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“l(fā)inux sock文件指的是什么”文章吧。

linux sock文件是指通過shell編程后形成的套接口文件;socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口;在設(shè)計(jì)模式中,Socket其實(shí)就是一個(gè)門面模式,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面。

linux sock文件是什么意思?

linux中sock,它一般是指通過shell編程后形成的套接口文件,通過ls -l 后,第一個(gè)顯示的文件類型為:s 。

Socket是什么?

1、 socket套接字:

socket起源于Unix,而Unix/Linux基本哲學(xué)之一就是“一切皆文件”,都可以用“打開open –> 讀寫write/read –> 關(guān)閉close”模式來操作。Socket就是該模式的一個(gè)實(shí)現(xiàn), socket即是一種特殊的文件,一些socket函數(shù)就是對(duì)其進(jìn)行的操作(讀/寫IO、打開、關(guān)閉).

說白了Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口。在設(shè)計(jì)模式中,Socket其實(shí)就是一個(gè)門面模式,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面,對(duì)用戶來說,一組簡(jiǎn)單的接口就是全部,讓Socket去組織數(shù)據(jù),以符合指定的協(xié)議。

注意:其實(shí)socket也沒有層的概念,它只是一個(gè)facade設(shè)計(jì)模式的應(yīng)用,讓編程變的更簡(jiǎn)單。是一個(gè)軟件抽象層。在網(wǎng)絡(luò)編程中,我們大量用的都是通過socket實(shí)現(xiàn)的。

2、套接字描述符

其實(shí)就是一個(gè)整數(shù),我們最熟悉的句柄是0、1、2三個(gè),0是標(biāo)準(zhǔn)輸入,1是標(biāo)準(zhǔn)輸出,2是標(biāo)準(zhǔn)錯(cuò)誤輸出。0、1、2是整數(shù)表示的,對(duì)應(yīng)的FILE *結(jié)構(gòu)的表示就是stdin、stdout、stderr

套接字API最初是作為UNIX操作系統(tǒng)的一部分而開發(fā)的,所以套接字API與系統(tǒng)的其他I/O設(shè)備集成在一起。特別是,當(dāng)應(yīng)用程序要為因特網(wǎng)通信而創(chuàng)建一個(gè)套接字(socket)時(shí),操作系統(tǒng)就返回一個(gè)小整數(shù)作為描述符(descriptor)來標(biāo)識(shí)這個(gè)套接字。然后,應(yīng)用程序以該描述符作為傳遞參數(shù),通過調(diào)用函數(shù)來完成某種操作(例如通過網(wǎng)絡(luò)傳送數(shù)據(jù)或接收輸入的數(shù)據(jù))。

在許多操作系統(tǒng)中,套接字描述符和其他I/O描述符是集成在一起的,所以應(yīng)用程序可以對(duì)文件進(jìn)行套接字I/O或I/O讀/寫操作。

當(dāng)應(yīng)用程序要?jiǎng)?chuàng)建一個(gè)套接字時(shí),操作系統(tǒng)就返回一個(gè)小整數(shù)作為描述符,應(yīng)用程序則使用這個(gè)描述符來引用該套接字需要I/O請(qǐng)求的應(yīng)用程序請(qǐng)求操作系統(tǒng)打開一個(gè)文件。操作系統(tǒng)就創(chuàng)建一個(gè)文件描述符提供給應(yīng)用程序訪問文件。從應(yīng)用程序的角度看,文件描述符是一個(gè)整數(shù),應(yīng)用程序可以用它來讀寫文件。下圖顯示,操作系統(tǒng)如何把文件描述符實(shí)現(xiàn)為一個(gè)指針數(shù)組,這些指針指向內(nèi)部數(shù)據(jù)結(jié)構(gòu)。

linux sock文件指的是什么

對(duì)于每個(gè)程序系統(tǒng)都有一張單獨(dú)的表。精確地講,系統(tǒng)為每個(gè)運(yùn)行的進(jìn)程維護(hù)一張單獨(dú)的文件描述符表。當(dāng)進(jìn)程打開一個(gè)文件時(shí),系統(tǒng)把一個(gè)指向此文件內(nèi)部數(shù)據(jù)結(jié)構(gòu)的指針寫入文件描述符表,并把該表的索引值返回給調(diào)用者 。應(yīng)用程序只需記住這個(gè)描述符,并在以后操作該文件時(shí)使用它。操作系統(tǒng)把該描述符作為索引訪問進(jìn)程描述符表,通過指針找到保存該文件所有的信息的數(shù)據(jù)結(jié)構(gòu)。

針對(duì)套接字的系統(tǒng)數(shù)據(jù)結(jié)構(gòu):

1)、套接字API里有個(gè)函數(shù)socket,它就是用來創(chuàng)建一個(gè)套接字。套接字設(shè)計(jì)的總體思路是,單個(gè)系統(tǒng)調(diào)用就可以創(chuàng)建任何套接字,因?yàn)樘捉幼质窍喈?dāng)籠統(tǒng)的。一旦套接字創(chuàng)建后,應(yīng)用程序還需要調(diào)用其他函數(shù)來指定具體細(xì)節(jié)。例如調(diào)用socket將創(chuàng)建一個(gè)新的描述符條目:

linux sock文件指的是什么

2)、雖然套接字的內(nèi)部數(shù)據(jù)結(jié)構(gòu)包含很多字段,但是系統(tǒng)創(chuàng)建套接字后,大多數(shù)字字段沒有填寫。應(yīng)用程序創(chuàng)建套接字后在該套接字可以使用之前,必須調(diào)用其他的過程來填充這些字段。

以上就是關(guān)于“l(fā)inux sock文件指的是什么”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI