我不太明白使用streambuf相比常规数组的好处。让我解释一下我的问题。我有一个通过Rijndael 128 ECB加上一些简单的密码来加密剩余数据的网络连接,这些包结构为整个包的长度+操作码+数据。我必须实际复制所有数据从流缓冲区中,以便我可以应用解密算法?为什么要复制我已经拥有的数据呢?
发送数据时也遇到同样的问题。当处于安全模式时,数据包结构为整个包的长度+crc+数据,其中crc和数据都被加密。我可以创建一个MakePacket(HEADER,FORMAT,...)的巨兽函数来分配数组、格式化数据包、添加crc并加密它,但我想避免变长函数。我不能使用结构体,因为数据包具有动态长度,因为它可能包含数组或字符串。如果我使用MakePacket(unsigned char opcode,&streambuf sb),那么crc又会有问题->必须复制才能加密。
我应该在发送时使用变长巨兽函数与常规数组作为缓冲区,同时使用unsigned char pbyRecvBuffer[BUFFERMAXLEN]进行接收吗?
我不太确定如何设计这种通信方式,以避免复制数据。
谢谢你的回答。
发送数据时也遇到同样的问题。当处于安全模式时,数据包结构为整个包的长度+crc+数据,其中crc和数据都被加密。我可以创建一个MakePacket(HEADER,FORMAT,...)的巨兽函数来分配数组、格式化数据包、添加crc并加密它,但我想避免变长函数。我不能使用结构体,因为数据包具有动态长度,因为它可能包含数组或字符串。如果我使用MakePacket(unsigned char opcode,&streambuf sb),那么crc又会有问题->必须复制才能加密。
我应该在发送时使用变长巨兽函数与常规数组作为缓冲区,同时使用unsigned char pbyRecvBuffer[BUFFERMAXLEN]进行接收吗?
我不太确定如何设计这种通信方式,以避免复制数据。
谢谢你的回答。