ENet 是一个 UDP 网络库,此处提供教程 http://enet.bespin.org/Tutorial.html
如果我在一段时间内没有调用 enet_host_service(),但数据包在我没有“服务”时到达机器,会发生什么情况?它们是否在某处缓冲,等待调用 enet_host_service() ?
教程还说我可以用 0 超时调用这个函数,这意味着如果它不等待,它必须读取一个缓冲区...
最佳答案
我非常确定数据包将在操作系统 中缓冲,直到您调用enet_host_service()
,因为在您调用enet_host_service()
之前,enet 根本无法执行任何操作。它完全死了,只要您自己的代码在运行,它的状态就不会改变。
当您调用 enet_host_service()
时,它将使用套接字 API 从操作系统检索 UDP 数据包,然后,它们可能由 enet 本身缓冲(如果有多个“event”或“packet”),因为 enet_host_service()
允许您一次处理一个事件(虽然它很可能从操作系统的数据中接收多个事件)。
因此,您应该尽可能频繁地调用 enet_host_service()
,因为操作系统会在其缓冲区已满时简单地丢弃传入的数据包。
关于c++ - ENet 如何管理其到达的数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11905714/