我需要根据SEQ编号(这是一个无符号的4字节整数),以升序对通过TCP服务器/网络传输的数据包进行排序。换句话说,我想重新排列数据缓冲区(为简单起见,我使用std::vector),以便数据按SEQ的升序排列,后面分别是CHECKSUM和LEN(长度/大小以字节为单位)。数据包,当然还有实际(字节)数据...
每个数据包都遵循以下概述的结构,并且将有重复的SEQ号(一旦我有顺序的数据,使用CHECKSUM机制验证好的数据包就不会有太多困难)。
任何想法或协助将不胜感激,如果事先得到答复,我也深表歉意。
最佳答案
根据您的问题。 vector<byte>
代表您的缓冲区
以下是用于解释的伪代码。
vector<byte> buffer;
// receive data;
// packet as a struct
vector<packet> packets = extract_packet( &buffer );
sort(packets .begin(), packets .end(),
[](const packets & a, const packets & b) -> bool
{
return a.SEQ < b.SEQ;
});