ENet是UDP网络库,这里有教程http://enet.bespin.org/Tutorial.html。
如果我在一段时间内没有调用enet_host_service(),但是数据包到达机器,而我没有“服务”,会发生什么情况?它们是否在某处缓冲,等待对enet_host_service()的调用?
本教程还指出,我可以在0超时的情况下调用这个函数,这意味着如果它不等待,它必须读取一个缓冲区.
发布于 2012-11-18 10:06:59
我非常肯定,在调用enet_host_service()之前,数据包将在操作系统中进行缓冲,因为在此之前,enet根本无法执行任何操作。它完全死了,只要您自己的代码正在运行,它的状态就不会改变。
当您调用enet_host_service()时,它将使用socket从操作系统检索UDP数据包,然后,它们可能会由enet本身缓冲(如果有多个“事件”或“数据包”),因为enet_host_service()允许您一次处理一个事件(而它很可能从操作系统的数据中接收多个事件)。
因此,您应该尽可能频繁地调用enet_host_service(),因为当它的缓冲区已满时,操作系统只会丢弃传入的数据包。
https://stackoverflow.com/questions/11905714
复制相似问题