網路程式設計2 select poll epoll

2021-07-10 02:57:30 字數 978 閱讀 6031

其實linux自帶的man是非常好的學習工具。

select, poll, epoll都能直接通過man得到很詳細的解釋,當然具體的栗子就需要在網上找找或者看看書了。

1.select

#include

int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);

void fd_clr(int fd, fd_set *set);

int    fd_isset(int fd, fd_set *set);

void fd_set(int fd, fd_set *set);

void fd_zero(fd_set *set);

需要注意的就是

①fd_set就是用於需要監聽的描述符的控制代碼的集合,是乙個專門的資料結構

②這裡面的*都是需要在填引數的時候取位址的意思

③select(套接字最大數+1, 讀描述符, 寫描述符, 異常描述符, 超時時間)

④返回值,0表示超時返回,正數表示監聽事件發生的數量,負數表示異常。

2.poll

#include

int poll(struct pollfd *fds, nfds_t nfds, int timeout)

struct pollfd epoll_data_t;

需要注意的就是

①epoll_create引數size只要填寫乙個》0的整數即可,返回乙個epoll描述符epfd,用於代表整個epoll

②epoll_ctl(epoll描述符, 將監聽描述符加入/改變/登出監聽, 需要監聽的描述符, 需要關心的事件及其繫結的描述符(*表示取結構體的位址))

③epoll_wait(epoll描述符, 用於存放返回事件及其對應描述符的結構體陣列, 最大事件數量, 超時時間)

網路程式設計學習 IO復用 select poll

本文為unp第6章學習筆記 一,select函式 include int select int maxfd,fd set readset,fd set writeset,fd set exceptset,const struct timeval timeout 引數 maxfd select管理的最...

網路程式設計2

1.tcp和udp的區別 1 tcp是面向連線的傳輸控制協議,而udp是無連線的資料報服務 2 tcp傳輸資料可靠,保證資料傳輸的正確性和順序,而udp傳輸資料不可靠,會發生丟包,不保證傳輸資料的順序 3 tcp對系統資源要求多,udp對系統資源要求少 4 udp具有較好的實時性,工作效率較tcp高...

網路程式設計2

url類 url url new url throws malformedurlexception 這樣可以通過其方法獲得我們想要的資訊 string getfile 獲取此 url 的檔名。myweb demo.html?name df,age 30 string gethost 獲取此 url ...