2016-04-01 12 views
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でデータが利用可能になると、それぞれの異なるバッファに連結する必要がありますか?何かヒント?

答えて

0

recvでデータが利用可能になると、 異なるバッファにそれぞれ連結して連結する必要がありますか?

はい。

私はbyte-by-byteステートマシンを使用しますが、それはちょうど私のことでしょう。

+0

これは私の懸念を裏付けるものです。ありがとう。 –

関連する問題