ローカルエンドポイントにバインドしたいTCPソケットがあります。
私には2つのシナリオがあります:
- 使用されておらず、接続を待機していないローカルエンドポイントにソケットを接続します。
- 前回の実行で使用された/正しく閉じられていないローカルエンドポイントにソケットを接続します。
以前は、コンストラクターを使用してアクセプターを初期化し、io_serviceとエンドポイントを渡していましたが、使用されているエンドポイントに接続しようとすると、アクセプターがクラッシュしました。
acceptor_(io_service_, endpoint)
次に私がしたことは、コンストラクターを変更してio_serviceのみを取得することです(これにより、ソケットは開かれません)。
acceptor_(io_service_)
asioには、ソケットをローカルエンドポイントにバインドするbind()関数があることがわかりました。関数bind()には、エラーが発生したかどうかを示すパラメーターがありますが、上記の両方のシナリオで同じエラーが返されます。
boost::system::error_code ec;
acceptor_.bind(endpoint, ec);
if(ec)
{
// SOME ERROR NOTIFYING
// EDIT: error code returned is 10009
}
エンドポイントに接続して、このタイプのエラーに対してさまざまなエラーを取得する方法はありますか?