ppoll()
汇总数据包了吗?我有一个我构建的套接字库,它的吞吐量很低。但是,当我开始增加消息数量时,我开始看到数据包大小增加。我检查了发件人大小,发件人发送的所有数据包都是正确的。当调用recv()
函数时,数据包开始最大化并导致应用程序出错。有线索吗?
答案 0 :(得分:1)
ppoll()
不会聚合数据包,但是套接字接收缓冲区会这样做,发送方的套接字发送缓冲区也是如此。您不能依赖TCP中的接收计数:没有消息,并且接收方不保留发送方写入之间的边界。它严格来说是一个字节流。任何打包都完全取决于您实施。
当调用recv()函数时,数据包开始最大化并导致应用程序出错。
仅当您的代码中存在错误时。典型错误包括:
recv()
填充或未填充缓冲区recv()
返回的计数。