gpt4 book ai didi

c - Websockets、碎片和通过 recv 提供的可用数据

转载 作者:行者123 更新时间:2023-11-30 17:02:53 31 4
gpt4 key购买 nike

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

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

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

// 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下变得可用时,我是否需要跟踪这一点并连接到每个不同的缓冲区?有什么提示吗?

最佳答案

Do I need to keep track of this and concatenate to each of the different buffers as data becomes available under recv?

是的。

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

关于c - Websockets、碎片和通过 recv 提供的可用数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36366420/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com