0
解複用器可以監控多個插座FDS事件用這種方法:怎麼沒被通知去複用器當OP_ACCEPT事件發生
int select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
從參數上,有讀的事件,寫事件和異常事件,但接受事件在哪裏?
解複用器可以監控多個插座FDS事件用這種方法:怎麼沒被通知去複用器當OP_ACCEPT事件發生
int select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
從參數上,有讀的事件,寫事件和異常事件,但接受事件在哪裏?
這是ServerSocket上的讀取事件。手冊頁select(2)
:
爲了一個插座上的傳入連接的通知,你可以使用select(2)或poll(2)。一個可讀的事件將會是當嘗試新連接時傳送的 ,然後你可以調用accept()來獲得該連接的套接字。
'Selector'如何區分兩個可讀的事件? – JasonHuang
您不能在服務器和客戶端模式下同時使用單個套接字。在套接字上調用listen()後,它將成爲服務器套接字,並且只能用於接受遠程客戶端。如果你在同一個套接字上調用'connect()',它將返回EISCONN(「已連接」)錯誤。 – gudok
不是不會。它尚未連接。它可能會返回EINVAL。 – EJP