我正在构建一个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下的数据可用?任何提示?
答案 0 :(得分:0)
我是否需要跟踪这一点并连接到每个 在recv?
下可以获得不同的缓冲区数据
是
我会使用逐字节的状态机,但也许只是我....