問題タブ [asio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2059 参照

c++ - Boost::ASIO VS Qt ネットワーキング

ネットワークアプリケーションを作りたいです。Qtを使いたかったのですが、ネットワークライブラリが比較的大きいので、Boost::asioを学習しようとしましたが、同じくらいの大きさのようです

フットプリントが小さいライブラリとは? できるだけ小さく?Boost:ASIO または Qt を使用して、何らかの形で合理化してサイズを小さくすることはできますか? アプリケーションを 1MB 未満にする必要があります (可能であればさらに小さくする必要があります)。

0 投票する
1 に答える
1232 参照

c++ - boost::asio::async_read は、受信したデータのバイトがゼロで無限にループします

Async_write は正常に動作しますが、async_read は無限ループで実行される IO_Service ベースの非同期 TCP クライアントを作成しようとしています。問題を修正するための試行中に、他のすべてのケースでは async_read がデータの受信を停止するだけで、サーバーを停止するまで何も受信しないことがわかりました。以下は、クエリを投稿する前に試したコードとリンクです。

私が試した提案は私の2、3まったく同じです、すべての場合において、私の async_read ハンドラは何も読み取りません。1 つだけのケースで、私が試した残りのケースのようにバッファを設定すると、無限ループが開始され 、async_readハンドラが発生しません。 boost::asio::mutable_buffer bytes;boost::array<char, 512> bytes;boost::asio::streambuf bytes;char bytes[512];

これらの解決策をすべて試した後、私は混乱しています。バッファの問題でしょうか? read に渡す前に初期化する必要がありますか?

ガイドしてください。

0 投票する
2 に答える
688 参照

asio - asio streambuf 可変バッファ型 - prepare() の使用方法

スタンドアロン asio を使用して、read_some でサーバーを実装しました。私のサーバーループは、ソケットから受信したすべてのデータを蓄積します。以下の簡素化されたコードは正しく動作しませんが、inbuf.prepare() ステートメントをループに移動することで修正できます。

prepare() がループの外にあり、接続が確立されてから読み取られた合計バイト数が 4096 境界を超える場合、 string はその境界までのデータのみを保持します。つまり、s は bytes_read よりも短くなります。prepare() をループの外に置きたい場合は、次のような消費ループが必要になると推測しましたが、これもうまくいきませんでした。

prepare() の役割と、なぜ繰り返し呼び出す必要があるのか​​ を明確にすることはできますか?