關於epoll檢測非同步連線的方法

2021-05-25 07:18:02 字數 424 閱讀 6926

**:

因為epoll本身沒有明確提出當非同步connect成功之後會返回什麼樣的訊號,通過測試有如下結果:

1,當本地還沒呼叫connect函式,卻將套接字送交epoll檢測,epoll會產生一次 epollout | epollhup, 也就是產生乙個值為0x14的events.

2,當本地connect事件發生了,但建立連線失敗,則epoll會產生一次 epollin | epollerr | epollhup, 也就是乙個值為0x19的events.

3,當connect函式也呼叫了,而且連線也順利建立了,則epoll會產生一次 epollout, 值為0x4,即表明套接字已經可寫。

因而,要判斷連線建立,只需要判斷該套接字有可寫屬性且僅有可寫屬性即可。

ps:本例中使用的epoll採用et模式。

關於epoll的示例

下午研究了一下epoll,參考了以下的部落格綜合寫了乙個例子。這篇文章中有一些和我從man上面查到的不相符合的地方,特此指出。1 關於epoll create 這個函式的size引數已經器用。更推薦使用的是epoll create1 0 來代替普通的用法。另外epoll create1 epollc...

關於epoll的小應用

epoll用到的所有函式都是在標頭檔案sys epoll.h中宣告的,下面簡要說明所用到的資料結構和函式 所用到的資料結構 typedef union epoll data epoll data t struct epoll event 結構體epoll event 被用於註冊所感興趣的事件和回傳所...

用epoll實現非同步的Echo伺服器

epoll是kernel 2.6後新加入的事件機制,在高併發條件下,遠優於select.用個硬體中的例子吧,可能不太恰當 epoll相當於i o中斷 有的時候才相應 而select相當於輪詢 總要反覆查詢 其實epoll比slect好用很多,主要一下幾個用法。struct epoll event e...