我不太了解使用 streambuf 优于常规数组的优势。让我解释一下我的问题。我有一个网络连接,它使用 Rijndael 128 ECB + 一些简单的密码来加密小于 16 字节的剩余数据。数据包的结构为length_of_whole_packet+操作码+数据。我必须实际复制streambuf中的所有数据才能应用解密算法?为什么要再复制一份我已经拥有的数据?
我在发送数据时遇到了同样的问题。在安全模式下,数据包结构为 length_of_whole_packet+crc+data,其中 crc 和数据被加密。我可以像 MakePacket(HEADER, FORMAT, ...) 那样做一些怪物,它会分配数组、格式化数据包、添加 crc 并加密它,但我想避免使用 vararg 函数。我不能使用结构,因为数据包具有动态长度,因为其中可以有数组或字符串。如果我使用 MakePacket(unsigned char opcode, &streambuf sb) 那么 crc 就会再次出现问题 -> 必须制作副本来加密它。
我应该使用 vararg monstrosity 发送使用常规数组作为缓冲区并结合 unsigned char pbyRecvBuffer[BUFFERMAXLEN] 进行接收吗?
我不确定如何设计这种通信以避免数据副本。
谢谢你的回答。