在 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 下更改默认套接字缓冲区大小 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Python网络编程——修改套接字发送和接收的缓冲区大小

如何更改分屏emacs窗口的大小?

如何找到linux的套接字缓冲区大小

缓冲区大小已更改

c程序计算默认缓冲区的大小

内核调优参数说明