【发布时间】:2012-04-04 14:47:49
【问题描述】:
在我接受设置为侦听EPOLLIN 事件的连接套接字之后使用epoll,并且我收到EPOLLIN 事件,我是否必须在epoll_ctl 之前读取所有数据(直到0)只有EPOLLOUT?
示例:我有一个使用 epoll 的 HTTP 服务器,我只想读取(EPOLLIN 和 recv)HTTP 标头,直到 \r\n\r\n。我可以安全地忽略消息的其余部分而不阅读它并切换到输出(EPOLLOUT 和 send)吗?
【问题讨论】:
-
如果使用边沿触发,你可以做到。但是,如果您不读取剩余的输入数据,那么它将在套接字输入缓冲区中,直到您关闭套接字,并且它可能会填满缓冲区(可能非常小)。