在许多 UNIX TCP 实现中,TCP_CORK
提供了一个套接字选项,它允许调用者绕过Nagle 算法并明确指定何时发送物理数据包。Windows(Winsock)中是否有等效功能?
TCP_CORK(自 Linux 2.2 起)
如果设置,则不发送部分帧。再次清除该选项时,将发送所有排队的部分帧。这对于在调用 sendfile(2) 之前添加标头或吞吐量优化很有用。按照目前的实施,TCP_CORK 对输出进行软木塞的时间有 200 毫秒的上限。如果达到此上限,则自动传输排队的数据。只有从 Linux 2.5.71 起,此选项才能与 TCP_NODELAY 结合使用。此选项不应在旨在可移植的代码中使用。
(我知道TCP_NODELAY
,但这不是我需要的;我仍然希望在发送缓冲区中累积多个写入,然后在我准备好发送物理数据包时触发 TCP 堆栈。)