0
私はwebsocketサーバーを構築しています。フレームを解析するために、私は次のようなことをしています。ウェブソケット、断片化、利用可能なデータからrecv
// 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でデータが利用可能になると、それぞれの異なるバッファに連結する必要がありますか?何かヒント?
これは私の懸念を裏付けるものです。ありがとう。 –