如何在 Windows 7 中设置 TCP 缓冲区大小

如何在 Windows 7 中设置 TCP 缓冲区大小

我有一台 Windows 7 64 位计算机,该计算机上运行着两个独立的应用程序。一个应用程序通过 4 个 TCP 连接(相同 IP,不同端口)写入数据。另一个应用程序读取该数据。尽管计算机已连接到网络,但所有这些都是计算机内部的。

每秒写入的数据总计约为 8MB。单个消息大小从 50KB 到 ~60KB 不等。每秒在每个套接字上发送 10-15 条这样的消息。这意味着其中一个连接每秒会一次性转储 5MB(粗略地说)。

我已设置以下选项:

Tcp1323Opts=1 
netsh int tcp set heuristics disabled

我使用 setsockopts 将已加载连接上的接收缓冲区设置为 8Mbytes,将数据转储较少的连接上的接收缓冲区设置为 2Mbytes。

最后,问题是:

  1. 这是正确的解决方法吗?WinXP 有很多文档,但 Win7 的文档却不多。
  2. 3 个数据较少的连接运行良好,但 5Mbyte 的连接偶尔会超时或出错,提示系统必须关闭连接。
  3. 我认为从我读到的内容来看,接收窗口的限制是 16MB。这是针对所有连接,还是针对每个连接都适用?
  4. 如果根据每个连接,我可以将每个连接设置为不同的接收窗口大小吗?
  5. 最后但并非最不重要的一点是,我通过 setsockopts 将传输缓冲区设置为与接收缓冲区相同。这有什么作用吗?

相关内容