ENet是一个UDP网络库,这里有一个教程http://enet.bespin.org/Tutorial.html
如果我在一段时间内没有调用enet_host_service()会发生什么情况,但是当我没有“服务”时,数据包会到达机器上?他们是否在某处缓冲,等待调用enet_host_service()?
本教程还指出我可以在0超时时调用此函数,这意味着如果它不等待,则必须读取缓冲区...
答案 0 :(得分:3)
我很确定数据包会在操作系统中缓冲,直到你调用enet_host_service()
,因为在你这样做之前,enet根本无法做任何事情。它完全死了,只要您自己的代码正在运行,它的状态就不会改变。
当你调用enet_host_service()
时,它将使用套接字API从操作系统中检索UDP数据包,然后,它们可能由enet本身缓冲(如果有多个“事件”或“数据包” “),因为enet_host_service()
允许您一次处理一个事件(虽然它可能会从操作系统的数据中接收到多个事件)。
因此,您应该尽可能频繁地调用enet_host_service()
,因为操作系统只会在缓冲区已满时丢弃传入的数据包。