IO多路轉接select 檔案描述符就緒條件

2021-09-11 01:32:16 字數 526 閱讀 5333

select檔案描述符狀態集包含:可讀檔案描述符集合、可寫檔案描述符集合和異常檔案的描述符集合

1. 在socket核心當中,接收緩衝區中的位元組數,大於等於低水位標記,此時可以無阻塞的讀取資料,並且返回值大於0;

2. socket中對端關閉連線,此時進行讀,返回值為0;

3. socket中監聽套接字有新的連線到來;

4. socket上有未處理的錯誤,此時我們可以使用getsockopt來讀取和清除該錯誤。

1. socket核心中,傳送緩衝區的可用位元組數空間大於等於低水位標記,此時可以進行無阻塞的寫,並且返回值大於0.

2. 對於乙個被關閉的socket寫操作,會觸發sigpipe訊號;

3. socket使用非阻塞connect連線成功或者失敗(超時)之後;

4. socket上有未處理的錯誤。此時我們可以使用getsockopt來讀取和清除該錯誤;

1. select能處理的異常情況只有一種:socket上接收到帶外資料。

I O多路轉接(select

一.基本概念 二.函式原型 includeint select int nfds,fd set readfds,fd set writefds,fd set exceptions,struct timeval timeout fd set 介面 void fd clr int fd,fd set s...

select多路IO轉接

void fd zero fd set set 清空乙個檔案描述符集合。fd set rset fd zero rset void fd set int fd,fd set set 將待監聽的檔案描述符,新增到監聽集合中 fd set 3,rset fd set 5,rset fd set 6,rs...

IO 多路轉接 select

select多路io轉接 原理 借助核心,select來監聽,客戶端連線 資料通訊事件 void fd clr int fd,fd set set 將乙個檔案描述符從監聽集合中 移除 fd clr 4,rset int fd isset int fd,fd set set 判斷乙個檔案描述符是否在監...