gpt4 book ai didi

c++ - 我正在将 UDP 数据包从本地主机发送到本地主机,并在有时丢弃的数据包上运行。我该如何阻止这种情况以及为什么会发生这种情况?

转载 作者:可可西里 更新时间:2023-11-01 18:21:07 25 4
gpt4 key购买 nike

这是我程序的输出

sending agent update
Created new player
Identified
sending agent update
Physics: 2 ticks this frame
time= 200
time= 300
***Packet Dropped: 2:10 ***
***Packet Dropped: 2:11 ***
***Packet Dropped: 2:12 ***
***Packet Dropped: 2:13 ***
***Packet Dropped: 2:14 ***
***Packet Dropped: 2:15 ***
***Packet Dropped: 2:16 ***
***Packet Dropped: 2:17 ***
***Packet Dropped: 2:18 ***
***Packet Dropped: 2:19 ***
***Packet Dropped: 2:20 ***
***Packet Dropped: 2:21 ***
time= 400
Physics: 2 ticks this frame
time= 500
Physics: 2 ticks this frame

正在从本地主机向本地主机发送数据包,数据包正在丢弃。这只发生在接近开始的时候。前 10 个左右的数据包通过,然后丢弃之后的数据包。连续 5 到 40 包。然后数据包停止丢弃。

有什么原因会发生这种情况吗?

更新:

以下代码解决了这个问题。

int buffsize = 65536; // 65536
setsockopt(socket, SOL_SOCKET, SO_RCVBUF, (void*)&buffsize, sizeof(buffsize));

我发送数据包的速度太快,超过了 Windows 默认接收缓冲区,它只有 8 KB。增加缓冲区大小解决了这个问题。

最佳答案

检查操作系统中默认配置的 UDP 缓冲区大小。

如果发现它更少,则可以在创建 UDP 套接字时显式提供更大的值。

int buffer_size = 4 * 1024 * 1024 ;setsockopt(socket, SOL_SOCKET, SO_RCVBUF, &buffer_size, sizeof(buffer_size));

你可能会发现 THIS 链接很有用。

关于c++ - 我正在将 UDP 数据包从本地主机发送到本地主机,并在有时丢弃的数据包上运行。我该如何阻止这种情况以及为什么会发生这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8529588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com