【发布时间】:2013-02-20 13:03:40
【问题描述】:
epoll TCP 与 EPOLLOUT | EPOLLET 一次获取事件,即使我在获取第一个事件后发送数据也会超时。
在 UDP 中,epoll 在发送新数据后不断获取 EPOLLOUT 事件。
你能解释一下这个问题吗?
【问题讨论】:
-
想展示一些代码吗?也许是SSCCE?
标签: c
epoll TCP 与 EPOLLOUT | EPOLLET 一次获取事件,即使我在获取第一个事件后发送数据也会超时。
在 UDP 中,epoll 在发送新数据后不断获取 EPOLLOUT 事件。
你能解释一下这个问题吗?
【问题讨论】:
标签: c
EPOLLET 是边沿触发模式,这意味着它只会通知您状态转换。在这种情况下,它会在文件描述符从 not 可写变为可写时通知您。使其不可写的唯一方法是填充传出缓冲区。所以你只需要继续发送,直到你收到 EAGAIN,然后你会等待通知。
【讨论】: