問題タブ [boost-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.
c++ - ブースト: TCP サーバーに「任意のポート」を指定するにはどうすればよいですか?
- BoostでTCPベースのサーバーに「使用可能なポートを選択する」を指定するにはどうすればよいですか?
- 接続が受け入れられたら、どうすればポートを取得できますか?
更新:「利用可能なポート」とは、OSが利用可能なポートを選択できることを意味します。つまり、ポートを指定したくありません。
c++ - Boost.Asio で HTML コンテンツを取得するためのシンプルなインターフェース
サーバーに HTTP リクエストを送信し、boost.asio ライブラリを介して応答を取得する方法の例はたくさんあります。しかし、単純なインターフェースの良い例を見つけることができず、自分で実装する必要があるかどうか疑問に思いました。
たとえば、http://www.foo.bar/path/to/default.htmlのコンテンツを取得する必要がある場合、URL を検証せずにコンテンツを取得し、HTTP リクエストを作成してサーバーの応答を解析する方法はありますか?
基本的に、私はこのようなものを探しています:
boost.asio の使用を避けたいことがいくつかあります。
- URL の解析と検証を避けます。
- HTTP リクエストを手動で作成します。
- HTML ページ コンテンツからの HTTP 応答の切り取り。
boost - Boost::asio async_wait ハンドラのシグネチャ
私はboost::asioの例を見ています。私は 例4を見ています
紛らわしいのは、この例の WaitHandler にはシグネチャがあることです。
void プリント (これ)
しかし、async_wait 呼び出しは、そのハンドラーを想定しています。
ハンドラーの関数シグネチャは次のようにする必要があります。
void handler( const boost::system::error_code& error // 操作の結果。);
パラメーターの型は関数のシグネチャの一部であるため、上記の例で async_wait が、boost::system::error_code 型ではないパラメーターを持つハンドラーを受け入れるのはなぜですか?
ありがとう。
performance - boost::asio のパフォーマンス分析を行った人はいますか?
ソケットのようなローカル IPC が必要です。Windows で名前付きパイプとオーバーラップ IO を使用しましたが、UNIX ドメイン ソケットも使用できるようにアプリケーションを boost::ASIO に書き換えたいと考えています。
私は最近 libevent ライブラリの一部を見直しましたが、1.4 バージョンの Windows では socket() と select() のみをサポートしていることを知っています。オーバーラップされた IO は非常に効率的であるため、それを除外することは明らかに容認できない特性であり、バージョン 2 (アルファ版) で対処されています。次善の実装の別の例は、行のどこかで対処されたタイムアウト ロジックの赤黒ツリーとプリオ キューの使用です。
ブーストと libevent/libev のパフォーマンス特性について意見がある人はいますか? 特定のプラットフォームで明らかに望ましくない特性がありますか? この質問に対する私の目的は、絶対に必要でない限り、ASIO ライブラリをピジョンホールにしたくないということです。boost::asio が最適な OS プリミティブを最適な方法で使用しているかどうかを知りたいです。
c++ - Boost.Asio で読み取りと書き込みに別々のスレッドを使用することは可能ですか?
Boost Documentationによると、複数のスレッドを呼び出すio_service::run()
と、IO サービスが非同期タスクの実行に使用できるスレッドのプールがセットアップされます。プールに参加したすべてのスレッドが同等と見なされることを明示的に示しています。
これは、ソケットからの読み取り用と書き込み用に別々のスレッドを持つことができないことを意味しますか? 可能であれば、これをどのように実装しますか?
c++ - boost.asio tcp ソケット、非同期操作は注文されますか?
boost::asio::async_write/async_read を直接呼び出している場合、データは順序付けされますか? または、再度書き込み/読み取りを呼び出す前に、コールバックを待機する必要がありますか?
前もって感謝します!
c++ - 割り込み boost::asio 同期読み取り?
asio 同期ソケットを使用して、バックグラウンド スレッドから TCP 経由でデータを読み取ります。これは「サーバー」クラスにカプセル化されています。
ただし、このクラスのデストラクタが呼び出されたときにスレッドを終了させたいです。問題は、読み取り関数の呼び出しがブロックされるため、スレッドを簡単に終了できないことです。Win32 には、そのための API があります。WaitForMultipleObjects
これは、私が望むことを正確に実行します。
ブーストで同様の効果を得るにはどうすればよいですか?
c++ - boost::asio マルチスレッドの問題
boost::asio
マルチスレッドにしたいサーバーを持っています。
サーバーはいくつかの「領域」に分割できます。ソケットは接続領域で始まり、クライアントに接続されると、認証領域 (つまり、ログインまたは登録) に移動してから、サーバーのさまざまな他の部分間を移動します。クライアントが何をしているかについて。
io_service
特に共通リソースとのやり取りが多い領域では、多数のロックが必要になるため、すべてのソケットに対して単一のスレッド プールを使用することは特に望んでいません。ただし、代わりに、各サーバーコンポーネント (認証など) に独自のスレッドを提供したいと考えています。
ただし、これを行う方法がわかりません。各コンポーネントに独自の io_service を与えるというアイデアを検討したので、必要なスレッドを使用できますが、ソケット領域は io_service に関連付けられており、クライアントソケットをあるコンポーネントから別のコンポーネントに移動する方法がわかりません。
boost-asio - Asio と Web ソケットをブーストしますか?
Boost asio を使用してWeb Sockets API を実装しようとする試みを知っている人はいますか?
c++ - boost :: asio::streambufをstd::stringに変換するにはどうすればよいですか?
boost :: asio::streambufをstd::stringに変換したいと思います。
どうすれば簡単にできますか?