【问题标题】:Change default socket buffer size under Windows [closed]在 Windows 下更改默认套接字缓冲区大小 [关闭]
【发布时间】:2013-09-29 22:01:09
【问题描述】:

我无法更改的应用程序正在丢弃一些传入的 UDP 数据包。我怀疑接收缓冲区溢出。是否有注册表设置使默认缓冲区大于 8KB?

【问题讨论】:

  • 看看这个questionthis one
  • @ja_mesa 我的 udp 数据包是 TS over IP 并且总是 7*188 = 1316 字节。我不担心碎片化。
  • 增大接收缓冲区只会稍微解决问题。要么减慢发送者的速度,要么加快接收者的速度。而且您无法消除 UDP 中的数据包丢失。

标签: windows sockets udp registry


【解决方案1】:

来自this 要设置 Windows 的默认大小,请使用以下 DWORD 注册表项:

[HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet\Services\Afd\Parameters]

DefaultReceiveWindow = 10240
DefaultSendWindow = 10240

【讨论】:

  • 我需要在 [HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet\Services\Afd\Parameters] 下创建 DefaultReceiveWindow 和 DefaultSendWindow 吗?因为这些在我的注册表中不可用。
  • 你可以试试,修改后需要重启系统。
  • 谢谢。我添加了这些值并重新启动了我的系统。将这两个值都设置为 16384。我在寻找使用 FFMPEG 解码 RTSP 流期间丢失 RTP 数据包的解决方案时到达了这个线程。在解码过程中,我仍然看到 RTSP 流中的 RTP 数据包丢失。
  • @Tariq 请尝试getsockopt 和参数SO_SNDBUF,您可以获得套接字缓冲区大小。顺便说一句,您可以通过setsockopt 和参数SO_SNDBUF 设置套接字缓冲区的大小。
  • 错误答案。问题是关于 UDP 的。答案是关于 TCP。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多