如何避免“C”中的 TCP 聚合?

use*_*286 4 c tcp

我正在通过网络发送许多 TCP 数据包,每个数据包大小为 50 字节。后来我发现 TCP 将几个 50 字节的数据包聚合成一个 TCP 数据包。我的问题是,有没有办法避免“C”程序中的 TCP 聚合?

小智 5

将多个发送的数据包打包到单个 TCP 数据包中是使用称为Nagle 算法的算法来处理的。要禁用它,请在套接字上设置该TCP_NODELAY选项:

int flag = 1;
setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &flag, sizeof(flag));
Run Code Online (Sandbox Code Playgroud)

请注意,这会降低网络效率,应该避免,除非您确实需要立即发送每个数据包。