poll函式建立伺服器

2021-10-10 10:30:46 字數 1346 閱讀 5708

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 資料...