9.2. TCP_CORK 套接字选项


TCP_CORK 选项收集套接字中的所有数据包,并阻止传输它们,直到缓冲区填充到指定的限制。这使得应用能够在内核空间中构建数据包,并在禁用 TCP_CORK 时发送数据。使用 setsocketopt () 函数在套接字文件描述符上设置 TCP_CORK。在开发程序时,如果必须从文件发送批量数据,请考虑使用带有 sendfile () 函数的 TCP_CORK

当通过各种组件在内核中构建逻辑数据包时,可使用 setsockopt 套接字 API 将它配置为 1 的值来启用 TCP_CORK。这称为 "corking the socket"。如果特定时间没有删除 cork,TCP_CORK 可能会导致错误。

以下示例演示了通过 setsockopt socket API 启用 TCP_CORK

int one = 1;
setsockopt(descriptor, SOL_TCP, TCP_CORK, &one, sizeof(one));
Copy to Clipboard Toggle word wrap

在某些环境中,如果内核无法识别何时删除 cork,您可以手动删除它,如下所示:

int zero = 0;
setsockopt(descriptor, SOL_TCP, TCP_CORK, &zero, sizeof(zero));
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat