網路爬蟲二十一 多路IO復用

2021-07-29 17:38:43 字數 944 閱讀 9604

與多執行緒和多程序相比,i/o多路復用的最大優勢是系統開銷小,系統不需要建立新的程序或者執行緒,也不必維護這些執行緒和程序。

主要應用:

(1)客戶程式需要同時處理互動式的輸入和伺服器之間的網路連線

(2)客戶端需要對多個網路連線作出反應

(3)tcp伺服器需要同時處理多個處於監聽狀態和多個連線狀態的套接字

(4)伺服器需要處理多個網路協議的套接字

(5)伺服器需要同時處理不同的網路服務和協議

select()函式

readfds:select()函式監視的可讀描述符集合

wtitefds:select()函式監視的可寫描述符集合

errnofds:select()函式監視的異常描述符集合

timeout:select()函式監視超時結束時間,取null表示永久等待

timeout告知核心等待所指定描述字中的任何乙個就緒可花多少時間。其timeval結構用於指定這段時間的秒數和微秒數。

struct timeval;
fd_zero(fd_set *fdset):清空fdset與所有描述符的關係  

fd_set(int fd, d_set * fdset):建立描述符fd與fdset得關係

fd_clr(int fd, d_set * fdset):撤銷描述符fd與fdset得關係

fd_isset(int fd, d_set * fdset):檢查與fdset聯絡的描述符fd是否可以讀寫,返回非零表示可以讀寫

select()函式實現io多路復用的步驟

(1)清空描述符集合

(2)建立需要監視的描述符與描述符集合的關係

(3)呼叫select函式

(4)檢查監視的描述符判斷是否已經準備好

(5)對已經準備好的描述符程序io操作

《網路程式設計》I O 多路復用

在前面的文章中介紹了五種 i o 模型 i o 模型 這裡介紹 i o 模型中 i o 多路復用在 tcp 套接字程式設計中的使用。在 i o 多路復用中主要是 select 和 poll 函式的使用。該函式允許程序指示核心等待多個事件中的任何乙個發生,並只在乙個或多個事件發生或超過指定時間後才被喚...

Socket linux網路多路復用IO技術

1.mystery引入 select是一種多路復用io輸入輸出模式,在linux的輸入輸出程式設計中通過select的輪詢機制,發現可用 可讀或可寫的介面。低階socket程式中有乙個共同點 都是基於阻塞式的程式設計方式 非阻塞式是函式呼叫時不阻塞,不管函式執行成功與否,都會立即返回。優點 程式效率...

Socket linux網路多路復用IO技術

1.mystery引入 select是一種多路復用io輸入輸出模式,在linux的輸入輸出程式設計中通過select的輪詢機制,發現可用 可讀或可寫的介面。低階socket程式中有乙個共同點 都是基於阻塞式的程式設計方式 非阻塞式是函式呼叫時不阻塞,不管函式執行成功與否,都會立即返回。優點 程式效率...