2

バイナリデータを送信する libwebsocket クライアントがあります。バイナリ データをバッファ [ie buf] に保存し、ソケットに書き込みました。

n = libwebsocket_write(wsi,
       &buf[LWS_SEND_BUFFER_PRE_PADDING], l, opts | LWS_WRITE_BINARY);

私の問題は、ソケットが 22392 バイトしか書き込めないことです [受け取った n= 22392]。l >=22392 バイトの場合、部分書き込みとして認識されます。この値は、アーキテクチャによって異なります。

質問:

  • libwebsocket のデータサイズに制限はありますか?

  • バッファ ペイロード値を拡張する方法はありますか?

4

2 に答える 2

6

私は私の質問に対する答えを得ました。それが私のデータを妨げたペイロード値です。データサイズに合わせてペイロード値を調整してください。

struct libwebsocket_protocols {
   const char * name;
   callback_function * callback;
   size_t per_session_data_size;
   size_t rx_buffer_size;
   unsigned int id;
   struct libwebsocket_context * owning_server;
   int protocol_index;
};

rx_buffer_size
サポートする最大の正当なフレームのサイズに設定する必要があります。

rx_buffer_size を 65536 に設定すると、データを完全に書き込むことができます。

これが私に役立つリンクです
https://libwebsockets.org/trac/libwebsockets/ticket/40
https://libwebsockets.org/libwebsockets-api-doc.html

于 2015-05-05T06:30:58.660 に答える