我需要根据SEQ编号(这是一个无符号的4字节整数),以升序对通过TCP服务器/网络传输的数据包进行排序。换句话说,我想重新排列数据缓冲区(为简单起见,我使用std::vector),以便数据按SEQ的升序排列,后面分别是CHECKSUM和LEN(长度/大小以字节为单位)。数据包,当然还有实际(字节)数据...

每个数据包都遵循以下概述的结构,并且将有重复的SEQ号(一旦我有顺序的数据,使用CHECKSUM机制验证好的数据包就不会有太多困难)。

c++ - 排序具有特定结构的数据包缓冲区-LMLPHP

任何想法或协助将不胜感激,如果事先得到答复,我也深表歉意。

最佳答案

根据您的问题。 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;
});

10-04 22:32
查看更多