socket概念-創(chuàng)新互聯(lián)

不管socket,還是FIFO、管道、終端,對(duì)我們來(lái)說(shuō),一切都是文件,一切都是流。在信息 交換的過(guò)程中,我們都是對(duì)這些流進(jìn)行數(shù)據(jù)的收發(fā)操作,簡(jiǎn)稱為I/O操作(input and output),往流中讀出數(shù)據(jù),系統(tǒng)調(diào)用read,寫(xiě)入數(shù)據(jù),系統(tǒng)調(diào)用write。不過(guò)話說(shuō)回來(lái)了 ,計(jì)算機(jī)里有這么多的流,我怎么知道要操作哪個(gè)流呢?對(duì),就是文件描述符,即通常所說(shuō)的fd,一個(gè)fd就是一個(gè)整數(shù),所以,對(duì)這個(gè)整數(shù)的操作,就是對(duì)這個(gè)文件(流)的操作。我們創(chuàng)建一個(gè)socket,通過(guò)系統(tǒng)調(diào)用會(huì)返回一個(gè)文件描述符,那么剩下對(duì)socket的操作就會(huì)轉(zhuǎn)化為對(duì)這個(gè)描述符的操作。不能不說(shuō)這又是一種分層和抽象的思想。
同步IO,是一種用戶空間與內(nèi)核空間的調(diào)用發(fā)起方式。同步IO是指用戶空間線程是主動(dòng)發(fā)起IO請(qǐng)求的一方,內(nèi)核空間是被動(dòng)接受方。
異步IO則反過(guò)來(lái),是指內(nèi)核kernel是主動(dòng)發(fā)起IO請(qǐng)求的一方,用戶線程是被動(dòng)接受方。
阻塞IO,指的是需要內(nèi)核IO操作徹底完成后,才返回到用戶空間,執(zhí)行用戶的操作。阻塞指的是用戶空間程序的執(zhí)行狀態(tài),用戶空間程序需等到IO操作徹底完成。傳統(tǒng)的IO模型都是同步阻塞IO。
非阻塞IO,指的是用戶程序不需要等待內(nèi)核IO操作完成后,內(nèi)核立即返回給用戶一個(gè)狀態(tài)值,用戶空間無(wú)需等到內(nèi)核的IO操作徹底完成,可以立即返回用戶空間,執(zhí)行用戶的操作,處于非阻塞的狀態(tài)。
I/O多路復(fù)用就通過(guò)一種機(jī)制,可以監(jiān)視多個(gè)描述符,一旦某個(gè)描述符就緒,能夠通知程序進(jìn)行相應(yīng)的操作。
select的本質(zhì)是采用32個(gè)整數(shù)的32位,即3232= 1024來(lái)標(biāo)識(shí),fd值為1-1024。當(dāng)fd的值超過(guò)1024限制時(shí),就必須修改FD_SETSIZE的大小。這個(gè)時(shí)候就可以標(biāo)識(shí)32max值范圍的fd。
poll與select不同,通過(guò)一個(gè)pollfd數(shù)組向內(nèi)核傳遞需要關(guān)注的事件,故沒(méi)有描述符個(gè)數(shù)的限制,pollfd中的events字段和revents分別用于標(biāo)示關(guān)注的事件和發(fā)生的事件,故pollfd數(shù)組只需要被初始化一次。
epoll還是poll的一種優(yōu)化,返回后不需要對(duì)所有的fd進(jìn)行遍歷,在內(nèi)核中維持了fd的列表。select和poll是將這個(gè)內(nèi)核列表維持在用戶態(tài),然后傳遞到內(nèi)核中。與poll/select不同,epoll不再是一個(gè)單獨(dú)的系統(tǒng)調(diào)用,而是由epoll_create/epoll_ctl/epoll_wait三個(gè)系統(tǒng)調(diào)用組成,后面將會(huì)看到這樣做的好處。epoll在2.6以后的內(nèi)核才支持。

創(chuàng)新互聯(lián)建站專注于高州網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供高州營(yíng)銷(xiāo)型網(wǎng)站建設(shè),高州網(wǎng)站制作、高州網(wǎng)頁(yè)設(shè)計(jì)、高州網(wǎng)站官網(wǎng)定制、微信小程序定制開(kāi)發(fā)服務(wù),打造高州網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供高州網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

本文題目:socket概念-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)網(wǎng)址:http://www.muchs.cn/article40/dsoceo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、云服務(wù)器、域名注冊(cè)、虛擬主機(jī)、軟件開(kāi)發(fā)、用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作