我正在编写一个通过websocket协议进行通信的简单程序。它需要能够屏蔽和取消屏蔽消息。当我收到一条消息(握手和东西之后)时,我只需将它放在一个结构中:
struct WSFrame
{
unsigned char frame_fin : 1;
unsigned char frame_rsv1 : 1;
unsigned char frame_rsv2 : 1;
unsigned char frame_rsv3 : 1;
unsigned char frame_opcode : 4;
unsigned char frame_masked : 1;
unsigned char frame_payload_length : 7;
}
变量fin,rsv123,opcode和masked自动更正。 现在我将长度转换为int(当然,当长度更长时,我根据RFC转换为短或长):
int payloadLength = this->frame_payload_length << 1;
除了屏蔽消息时,此方法正常。有时变量&#34;蒙面&#34;仍为0,长度始终不在0-127之间(在某处得到3000+)。我是否需要以不同方式获取屏蔽消息的长度?作为参考,服务器使用NodeJS编写,客户端是C ++。客户端上出现此问题,我自己写的。