問題タブ [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.

0 投票する
4 に答える
24797 参照

c++ - boost::asio::ip::tcp::socket は接続されていますか?

読み書き操作を行う前に接続状態を確認したい。

isConnect() メソッドを作成する方法はありますか?

これを見たけど「醜い」らしい。

is_open()関数もテストしましたが、期待どおりの動作がありません。

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

c++ - Boost.Asio を使用してホスト (のみ) を解決するには?

のドキュメントによると、boost::asio::ip::tcp::resolver::queryホストを解決するには、サービスも受け取る必要があります。

ポートに関係なくホストを解決したい場合はどうすればよいですか? どうすればいいですか?ダミーポートを指定する必要がありますか?

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

c++ - C ++、asioのブースト、nullで終了する文字列の受信

boost :: asioライブラリを使用してソケットからnullで終了する文字列を取得するにはどうすればよいですか?

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

c++ - ブースト ソケットを Pimpl でラップすることは可能ですか?

プロジェクトでは、使用クラスまたはラッピング .h にブースト ヘッダーを含める必要がないように、Boost Asio ソケットをラップしたいと考えています。

通常、ラップされたクラスにはポインターと前方宣言を使用します。

前方宣言:

次に、ソケットを宣言します。

(scoped_ptr がわからない場合は無視してください。問題は標準の * ポインターと同じです。)

しかし、これによりコンパイラエラーが発生します。

これは、udp が実際には名前空間ではなく、クラス自体であるためだと理解しています。ただし、内部クラスのみを使用したいのですが、何かアイデアはありますか?

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

c++ - Boost Asio async_read は読み取りを停止しませんか?

そう、

Boost asio 関数とソケット (特に非同期読み取り/書き込み) で遊んでいます。さて、ネットワーク接続から新しいバッファーが入ったときにのみハンドラーを呼び出すと思いboost::asio::async_readました...しかし、同じバッファーの読み取りを停止しないため、ハンドラーを呼び出し続けます。転送されたバイト数をチェックすることで軽減できましたが、基本的には CPU サイクルを浪費するビジー待機ループにあります。

ここに私が持っているものがあります:

いくつかは切り取られていますが、基本的には新しい接続が作成されてからstart()呼び出されます。handle_readメソッドが継続的に呼び出されないように、私が見逃しているものはありますか?

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

c++ - boost asio: 接続されたクライアントのリストを維持する

Boost Asio HTTP Server 3 の例を変更して、現在接続されているクライアントのリストを維持する最良の方法を探しています。

例から server.hpp を次のように変更すると:

次に、接続オブジェクトの有効期間を台無しにして、スコープ外に出ないようにして、クライアントから切断します。これは、ConnectionList で参照が維持されているためです。

代わりに、私の ConnectionList が次のようtypedef std::vector< boost::weak_ptr< connection > > ConnectionList;に定義されている場合、誰かがGetClientList().

これを行うための適切で安全な方法について誰か提案がありますか?

ありがとう、ポールH

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

c++ - Boost.Asioのドキュメントは存在しません。これらのエラーはどういう意味ですか?

Boost.Asioで2つのエラーに苦しんでいます。

1つ目は、ソケットでデータを受信しようとしたときに発生します。

2つ目は、(有効な!)ネイティブソケットからip :: tcp::socketを作成しようとしたときに発生します。

これらすべての問題があり、ドキュメントを参照する必要がないため、BSDソケットに戻りたくなりますが、そこでは自分自身の問題が発生しています...誰かが助けてくれるなら、本当に感謝しています。

編集:番号2に関して、nativeSocketは次のように宣言されます:

その後、ソケットに対して他のいくつかの処理が行われます。つまり、ioctlsocketを使用して非ブロッキングとして設定し、SO_LINGERおよびSO_OOBINLINEにsetsockoptを使用します。

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

c++ - winsock.hを使用したライブラリの問題

Boost.AsioとIntelIPP-Libraryに付属のMedia-Decoding-Samplesを使用するプロジェクトがあります。問題は次のとおりです。を定義せずにプロジェクトをコンパイルするWIN32_LEAN_AND_MEANと、Asioは悪名高い「winsock.halreadyincluded」エラーで文句を言います。マクロを定義すると、winsock.hを含むwindows.hに依存しているため、他のライブラリのヘッダーには未定義の型があります。そのヘッダーにwinsock.hを手動で追加しようとしましたが、これによりBoost.Asioが再び叫びます。私が考えることができる唯一の解決策は、すべてのコンパイルユニットを調べて、Asioが常に最初に含まれていることを確認することです。プロジェクトのサイズと複雑さ(およびそのソリューションの醜さ)のために、私はより良い方法を見つけたいと思います。

前もって感謝します !

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

sockets - asioudpwaitForReadyReadをブーストします

Boost asio udpSocketを使用して、データを読み取る準備ができるまで待機するか、タイムアウトが切れるまで待機する関数を実装しようとしています。

asyc_readとasync_waitを使用して、同様のことを行うことができますが、データを読み取る必要があります。データを読まずに同じことをしたい

これにより、多くの状況でudpSocketクラスをはるかに簡単に使用できるようになりますが、udpSocketインターフェイスを考えると、データを手動でバッファリングし、sync_read関数を書き直さないと、このような関数を実装する方法がわかりません。

最高、Dd