【问题标题】:TCP client server using epoll (EPOLLOUT | EPOLLET), EPOLLOUT event triggered just one time?TCP客户端服务器使用epoll(EPOLLOUT | EPOLLET),EPOLLOUT事件只触发一次?
【发布时间】:2013-02-20 13:03:40
【问题描述】:

epoll TCP 与 EPOLLOUT | EPOLLET 一次获取事件,即使我在获取第一个事件后发送数据也会超时。

在 UDP 中,epoll 在发送新数据后不断获取 EPOLLOUT 事件。

你能解释一下这个问题吗?

【问题讨论】:

  • 想展示一些代码吗?也许是SSCCE

标签: c


【解决方案1】:

EPOLLET 是边沿触发模式,这意味着它只会通知您状态转换。在这种情况下,它会在文件描述符从 not 可写变为可写时通知您。使其不可写的唯一方法是填充传出缓冲区。所以你只需要继续发送,直到你收到 EAGAIN,然后你会等待通知。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    相关资源
    最近更新 更多