ENet 如何管理其到达的数据包

How does ENet manage its arriving packets?

本文关键字:数据包 管理 何管理 ENet      更新时间:2023-10-16

ENet是一个UDP网络库,教程可在此处获得 http://enet.bespin.org/Tutorial.html

如果我在一段时间内没有调用 enet_host_service(),但数据包在我没有"服务"时到达机器,会发生什么情况?它们是否缓冲在某个地方,等待对 enet_host_service() 的调用?

本教程还指出我可以在 0 超时的情况下调用此函数,这意味着如果它不等待,它必须读取缓冲区......

我很确定数据包会在操作系统中缓冲,直到您调用enet_host_service(),因为在您这样做之前,enet 根本无法执行任何操作。它是完全死的,只要你自己的代码还在运行,它的状态就不会改变。

当你调用enet_host_service()时,它将使用套接字API从操作系统中检索UDP数据包,然后,它们可能由enet本身缓冲(如果有多个"事件"或"数据包"),因为enet_host_service()允许您一次处理一个事件(而它很可能从操作系统的数据中接收多个事件)。

因此,您应该尽可能频繁地调用enet_host_service(),因为操作系统只会在其缓冲区已满时丢弃传入数据包。