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