//listen 中backlog的值為兩個連線佇列的和 已完成連線佇列 和正處於三次握手的待連線佇列
ret = listen(sockfd,20);
if(-1 == ret)
printf("waiting for connnect\n");
for(i=0; imaxi)
if(connfd > maxfd)
//說明已經處理完客戶端的請求連線,繼續阻塞於select
if(--nready == 0)
continue;
//說明在已經建立連線的描述符有資料
} //有資料可讀
for(i=0; i<=maxi; i++)
ret = write(cli_fd, buf, len);
if(ret < 0)
if(-- nready == 0)
}} }
close(sockfd);
return 0;
}
LinuxIO多路復用之epoll
談到epoll,首先談一下select和poll,我們發現這兩種方式儲存監聽檔案描述符的方式為陣列 然後返回的是監聽描述符中就緒的個數 我們如果要進行處理 我們還得去監聽檔案描述符的陣列乙個乙個遍歷 去判斷哪個檔案描述符就緒 才去處理資料 而epoll內部用於儲存監聽檔案描述符的資料型別為紅黑樹 樹...
Linux IO多路復用
一.select 函式 include include include int select int n,fd set readfds,fd set writefds,fd set exceptfds,struct timeval timeout fd clr int fd,fd set set f...
Linux IO多路復用之epoll網路程式設計
本章節是用基本的linux基本函式加上epoll呼叫編寫乙個完整的伺服器和客戶端例子,可在linux上執行,客戶端和服務端的功能如下 客戶端從標準輸入讀入一行,傳送到服務端 服務端從網路讀取一行,然後輸出到客戶端 客戶端收到服務端的響應,輸出這一行到標準輸出 如下 include include b...