Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ENet如何管理其到达的数据包?_C++_C_Networking_Network Programming - Fatal编程技术网

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

C++ ENet如何管理其到达的数据包?,c++,c,networking,network-programming,C++,C,Networking,Network Programming,ENet是一个UDP网络库,这里提供了一个教程 如果我在一段时间内没有调用enet_host_service(),但数据包在我没有“服务”时到达机器,会发生什么情况?它们是否被缓冲在某个地方,等待对enet_host_service()的调用 本教程还指出,我可以在0超时的情况下调用此函数,这意味着如果它不等待,它必须读取一个缓冲区…我非常确定,在您调用enet\u host\u service()之前,数据包将在操作系统中缓冲,因为在您这样做之前,enet根本无法做任何事情。它完全死了,只要您

ENet是一个UDP网络库,这里提供了一个教程

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


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

我非常确定,在您调用
enet\u host\u service()
之前,数据包将在操作系统中缓冲,因为在您这样做之前,enet根本无法做任何事情。它完全死了,只要您自己的代码正在运行,它的状态就不会改变

当您调用
enet\u host\u service()
时,它将使用套接字API从操作系统检索UDP数据包,然后,它们可能由enet本身缓冲(如果有多个“事件”或“数据包”),因为
enet\u host\u service()
允许您一次处理一个事件(虽然它可能会从操作系统的数据接收多个事件)


因此,您应该尽可能经常地调用
enet\u host\u service()
,因为当缓冲区已满时,操作系统只会丢弃传入的数据包。

真的,这里有一个免费的答案!谢谢,像往常一样摇摆:)有没有办法知道操作系统可以存储多少数据包?它依赖于以太网芯片吗?@jokoon不确定,但我认为它依赖于操作系统,甚至可能是可配置的。我不认为这取决于以太网芯片,因为UDP比以太网的级别更高,尽管它可能也有某种缓冲区。有关更多信息,请参见此。