【发布时间】:2016-07-08 12:21:54
【问题描述】:
我一直在努力学习边沿触发epoll 编程。我对在epoll_wait 之后应该如何循环recv 直到它返回EAGAIN 感到困惑——这是否意味着我应该循环recvfrom 直到它返回@987654326 @也一样?如果是这样,这意味着我将不得不缓冲 UDP 数据包,以防我的应用程序尝试读取的字节数少于接收到的字节数。而且,如果我循环recvfrom,我可能会从不同的来源获得多个数据包——我还必须缓冲sockaddrs。这是真的?
【问题讨论】:
-
一个问题太多了。请简化和结构化你想要的东西
-
请注意,UDP 套接字的 recvfrom() 为您提供准确的 1(如果调用失败,则为 0)数据包。如果您不为整个数据包提供空间,多余的字节将永远丢失。