sockets - TCP_CORK 的影响

标签 sockets tcp size ip

我有一个用例,我在一个方向上通过 TCP/IP 发送数据。我通过多个 send() 调用来执行此操作,这些调用具有非常小的(相对于以太网帧的大小)有效负载(没有任何 send() 标志-称呼)。为了防止我的小负载数据包膨胀到一个完整的以太网帧的大小,我认为使用 TCP_CORK 套接字选项会很好。这行得通,但是当实际比较使用TCP_CORK前后的情况时,我注意到这种聚合已经完成了。为什么会这样?正如我所说,我没有为 send()(如 MSG_MORE)或其他套接字选项使用任何标志,所以我原以为我的原始解决方案是浪费的。

最佳答案

如果您发送消息的速度非常快,您可能会发现 Nagle 算法在起作用。您必须明确禁用它。在 linux 中的 IIrc 你必须设置 TCP_NODELAY,但在其他操作系统中有不同的选项。

关于sockets - TCP_CORK 的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7600507/

相关文章:

vba - 如何获得范围的完整高度和宽度,包括边框?

javascript - 动态 .length jquery 函数

sockets - SOCK_SEQPACKET 可用性?

sockets - 如何在TCP连接中实现请求响应?

java - 为什么这种计算二叉树大小的方法不起作用?

java - 跨 TCP 套接字与 ObjectInputStream、Java 和 Lua 客户端联网

c - 套接字编程将多个客户端连接到一台服务器并列出它们 C

c - 在 C 中使用 bsd/socket api 继续发送格式错误的 TCP header

c - 将 UDP 数据包发送到死服务器

c++ - 套接字通过send()发送的tcp数据包慢