我正在使用libevent创建一个小型p2p网络。
假设我想从一个节点向另一个节点发送10000字节的缓冲区,由于libevent,一次可以发送的最大大小为4096字节(因此为4096+4096+1808(。
从技术上讲(在TCP协议中(,接收数据的节点是否可以知道在接收到前4096个字节时将发送的字节总数?
否。然而,应用程序协议通常会告诉接收器需要多少字节。对于HTTP1.1,它是Content-Length
标头。您也可以沿着<len><data>
的行使用长度前缀。PostgresSQL在前端和后端之间使用该协议。