WebSocket发送数据时,会将您的发送数据进行一定格式的封包处理,具体协议格式网上很多文章介绍,大家直接问度娘。这里我直接上VC++ 的处理代码。
先定义数据包格式头结构:
//Websocket数据包数据头信息
struct WebSocketStreamHeader {
unsigned int header_size; //数据包头大小
int mask_offset; //掩码偏移
unsigned int payload_size; //数据大小
bool fin; //帧标记
bool masked; //掩码
unsigned char opcode; //操作码
unsigned char res[3];
};
数据包头操作类型定义
// 数据包操作类型
enum WebSocketOpCode {
ContinuationFrame = 0x0, //连续帧
TextFrame = 0x1, //文本帧
BinaryFrame = 0x2, //二进制帧
ConnectionClose = 0x8, //连接关闭
Ping = 0x9,
Pong = 0xA
};
根据数据包获取数据包头信息:
bool ReadHeader(const unsigned char* cData, WebSocketStreamHeader* header)
{
if (cData ==