我已經目前訂閱非阻塞插座:失去字節非阻塞套接字時對方寫和關閉
ev.events = EPOLLIN | EPOLLPRI | EPOLLERR | EPOLLHUP | EPOLLRDHUP| EPOLLET;
它接收一對夫婦EPOLLINs的我讀非阻止直到EAGAIN,然後我收到HUP & RDHUP,有時還有幾個字節需要讀取。
對方就是:
send(socket,960_bytes_buffer)
close(socket);
我試着MSG_PEEK recv的直接在兩個epollin事件循環和關閉時間,並增加接收到的數據沒有收到960始終,有時只有大約480字節。
使發送和關閉之間的套接字非阻塞或休眠(1)在客戶端工作正常。
它在我看來更多的是與epoll相關的非阻塞套接字問題。一些簡單的「nc -l -p port」接收適當的字節數量。
在檢查IN位之前是否檢查HUP位的事件? – 2009-10-13 14:58:10
是的,我確實,在任何情況下,在HUP之後關閉()並關閉之前檢查未決數據 – 2009-10-13 16:03:35
如何檢查未決數據? – 2009-10-13 16:11:59