通过recv的Websockets,碎片和可用数据

时间:2016-04-01 21:52:15

标签: c sockets websocket

我正在构建一个websocket服务器。为了解析帧,我正在做类似的事情:

// first fetch the first 2 bytes
result = recv(socket_fd, header_buffer, 2, 0);

其中2是我需要为标题获取的长度。然后解析它并继续读取:

// fetch extended payload length - 2 or 8
result = recv(socket_fd, header_extended_buffer, extended, 0);

// fetch masking key, 4
result = recv(socket_fd, header_masking_key_buffer, 4, 0);

// fetch payload
result = recv(socket_fd, payload_buffer, payload_size, 0);

问题,这可能不会一直有效吗?我知道recv只能获取第一个字节,当数据可用时,它会发送一些额外的字节。

我是否需要跟踪这个并连接到每个不同的缓冲区,因为recv下的数据可用?任何提示?

1 个答案:

答案 0 :(得分:0)

  

我是否需要跟踪这一点并连接到每个   在recv?

下可以获得不同的缓冲区数据

我会使用逐字节的状态机,但也许只是我....