質問: ブーストソケット/アクセプタは同じポートでリッスン/接続できません。 私はBoostに少し新しかったですが、私は特定のポート上のクライアントからの接続を受け入れることができるサーバーを作成しようとしています。このサーバーは、同じポート上のクライアントにも書き込むことができます。 しかし、 `acceptor_.bind()`/ `acceptor_.listen()`と `socket_.connect(* iterator)`の両方を実装しようとすると、 >無効な関数エラーで `async_accept()`が失敗します。 `acceptor_.listen()`を使用してソケット(サーバーからクライアントへ)に書き込むことができるのは、 `acceptor_.bind()` () `acceptor_.connect()`(ただし、 `acceptor_.bind()`、 `acceptor_.listen()`)を使用するだけで、 `async_read_some()`を使用してソケット(クライアントからサーバーに送信されたデータ)を読み込みます。 別のソケットオブジェクトを作成するか、別のポートを選択する必要がありますか?私は再利用アドレスをTrueに設定して有効にしました。
回答: あなたがネットワークプログラミングのいくつかの基本的な概念を把握していないようですが、これはブーストやAsioライブラリとは無関係です。一般にサーバーは `accept()`を呼び出し、クライアントは `connect()`を呼び出します。 asioの例はこれを詳細に示しています。 * 非同期tcpエコーサーバ a> * tcpエコークライアントをブロックする a> そして、サーバーが * `async_accept()` * `async_read_some()` * `async_write()` クライアントは、 * `connect()` * `write()` * `read()`