在 Windows 下更改默认套接字缓冲区大小 [关闭]
Posted
技术标签:
【中文标题】在 Windows 下更改默认套接字缓冲区大小 [关闭]【英文标题】:Change default socket buffer size under Windows [closed] 【发布时间】:2013-09-29 22:01:09 【问题描述】:我无法更改的应用程序正在丢弃一些传入的 UDP 数据包。我怀疑接收缓冲区溢出。是否有注册表设置使默认缓冲区大于 8KB?
【问题讨论】:
看看这个question和this one @ja_mesa 我的 udp 数据包是 TS over IP 并且总是 7*188 = 1316 字节。我不担心碎片化。 增大接收缓冲区只会稍微解决问题。要么减慢发送者的速度,要么加快接收者的速度。而且您无法消除 UDP 中的数据包丢失。 【参考方案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。以上是关于在 Windows 下更改默认套接字缓冲区大小 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章