int poll(struct pollfd *fds, nfds_t nfds, int timeout);
fds:監聽的檔案描述符【陣列】
struct pollfd
**nfds: 監聽陣列的,實際有效監聽個數。**
優點:
自帶陣列結構。 可以將 監聽事件集合 和 返回事件集合 分離。
拓展 監聽上限。 超出 1024限制。
缺點: 不能跨平台。 linux
無法直接定位滿足監聽事件的檔案描述符, 編碼難度較大。
2.#include
3.#include
4.#include
5.#include
6.#include
7.#include
8.#include
9.#include "wrap.h"
10.11.#define maxline 80
12.#define serv_port 6666
13.#define open_max 1024
14.15.
intmain
(int argc,
char
*ar**)
16.56.
}57.
58.if
(i == open_max)
59.perr_exit
("too many clients");
60.61. client[i]
.events = pollrdnorm;
/* 設定剛剛返回的connfd,監控讀事件 */
62.if
(i > maxi)
63. maxi = i;
/* 更新client中最大元素下標 */
64.if
(--nready <=0)
65.continue
;/* 沒有更多就緒事件時,繼續回到poll阻塞 */
66.}
67.for
(i =
1; i <= maxi; i++
)else
80.}
else
if(n ==0)
else
90.if
(--nready <=0)
91.break
;/* no more readable descriptors */
92.}
93.}
94.}
95.return0;
96.}
多路IO轉接伺服器實現方法二 poll 函式
相較於多路io轉接伺服器實現方法一 select 函式,使用poll 函式的優點有 檔案描述符的上限可以突破1024 select 函式監聽集合與返回的滿足監聽條件的集合為乙個集合,而poll函式將監聽集合與符合監聽條件的集合實現了分離 搜尋滿足條件的檔案描述符的範圍縮小了 但,poll函式不能實現...
I O多路轉接之poll伺服器
函式說明 include int poll struct pollfd fds,nfds t nfds,int timeout 引數說明 fds 是乙個struct pollfd結構型別的陣列,用於存放需要檢測其狀態的socket描述符 每當呼叫這個函式之後,系統不會清空這個陣列,操作起來比較方便 ...
linux 多路IO轉接伺服器之poll
引數1是結構體陣列的首位址。events的選取 pollin普通或帶外優先資料可讀,即pollrdnorm pollrdband pollrdnorm 資料可讀 pollrdband 優先順序帶資料可讀 pollpri 高優先順序可讀資料 pollout普通或帶外資料可寫 pollwrnorm 資料...