;引數1是結構體陣列的首位址。
events的選取:
pollin普通或帶外優先資料可讀,即pollrdnorm | pollrdband
pollrdnorm 資料可讀
pollrdband 優先順序帶資料可讀
pollpri 高優先順序可讀資料
pollout普通或帶外資料可寫
pollwrnorm 資料可寫
pollwrband 優先順序帶資料可寫
pollerr發生錯誤
pollhup 發生掛起
pollnval 描述字不是乙個開啟的檔案
nfds 監控陣列中有多少檔案描述符需要被監控
timeout 毫秒級等待
-1
:阻塞等
0
:立即返回,不阻塞程序
>0
:等待指定毫秒數,如當前系統時間精度不夠毫秒,向上取值
例子:
#include
#include
#include
#include
#include
#include
#include
#include
#include
"wrap.h"
#define maxline 80
#define serv_port 8000
#define open_max 1024
intmain
(int argc,
char
*ar**)
if(i == open_max)
/* 達到了最大客戶端數 */
perr_exit
("too many clients");
client[i]
.events = pollin;
/* 設定剛剛返回的connfd,監控讀事件 */
if(i > maxi)
maxi = i;
/* 更新client中最大元素下標 */if(
--nready <=0)
continue
;/* 沒有更多就緒事件時,繼續回到poll阻塞 */
}for
(i =
1; i <= maxi; i++
)else
perr_exit
("read error");
}else
if(n ==0)
elseif(
--nready <=0)
break;}
}}return0;
}
linux 多路IO轉接伺服器之select
多路io轉接伺服器也叫做多工io伺服器。該類伺服器實現的主旨思想是,不再由應用程式自己監視客戶端連線,取而代之由核心替應用程式監視檔案。1.select能監聽的檔案描述符個數受限於fd setsize,一般為1024,單純改變程序開啟的檔案描述符個數並不能改變select監聽檔案個數 2.解決102...
I O多路轉接之poll伺服器
函式說明 include int poll struct pollfd fds,nfds t nfds,int timeout 引數說明 fds 是乙個struct pollfd結構型別的陣列,用於存放需要檢測其狀態的socket描述符 每當呼叫這個函式之後,系統不會清空這個陣列,操作起來比較方便 ...
I O多路轉接 epoll伺服器
在前面的兩篇部落格中,我們介紹了最早期的select和改進版的poll 但是,他兩都沒有改進的就是,想要快速知道事件就緒並沒有得到改進,兩個全部是遍歷陣列,我們都知道它的時間複雜度就是o n 效率不是很高,時間複雜度達到o 1 才是高效的 epoll是linux特有的i o復用函式,它在實現和使用上...