ENet 如何管理其到达的数据包
How does ENet manage its arriving packets?
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()
,因为操作系统只会在其缓冲区已满时丢弃传入数据包。
相关文章:
- boost::asio UDP 广播客户端仅接收"fast"数据包
- 如何使用发送数据包所花费的时间计算两个节点之间的距离?
- 发送固定大小的 UDP 数据包
- pcap_handler回调仅在使用 NPCAP v0.9991 时包含空数据包
- 在 c++ 中解析数据包数据的最佳方法是什么?
- 接受函数在发送数据包时等待
- 如何在 omnet++ 中发送自定义数据包?
- Linux 包管理器如何处理 C++20 个模块?
- 数据包访问实践
- 在C++中创建一个简单的数据包路由器,如何跟踪"客户端"?
- 德拉吉诺 LG01-S 收到异常数据包并停止工作
- 将数据包从C++服务器发送到NodeJs服务器时出现MessagePack解码错误
- 使用C++将UDP数据包存储在Structure中
- FFmpeg av_read_frame从音频流返回数据包
- 为什么操作系统正在更改我的数据包的指定传出端口
- 是否可以将多个结构作为一个数据包存储在一个函数中,然后传递给其他函数并在那里提取?
- recvfrom 只收到几个数据包,之后它进入等待状态
- 如何调试由 C++ 编写的 npm 数据包
- 如何在INET的应用层中发送广播数据包
- ENet 如何管理其到达的数据包