2

Boost:asio :: ip :: tcp :: acceptorを使用して、アプリにサーバーソケットを作成します。close関数ではなくstop関数を使用してこのアクセプターソケットをio_service閉じますが、接続されているすべてのクライアントソケットは、アプリを閉じたときにのみ閉じます。どうすれば修正できますか?ありがとう!

4

1 に答える 1

9

次のいずれかを実行します。

  • socket::close()ソケットで呼び出します。
  • ソケットを破壊します。破壊中にソケットがどのように閉じられるかについての詳細は、この回答を参照してください。

io_service::stop()イベントループの処理のみを停止します。作業は引き続きに投稿できio_service、既存の作業はに残りio_serviceます。したがって、アプリケーションは、socket::close()閉じたい各ソケットを呼び出す必要があります。ポータブルで優雅なクロージャーの場合は、を呼び出すsocket::shutdown()前に呼び出してclose()ください。

Boost.AsioのHTTPサーバー1の例を確認するのに時間をかける価値があるかもしれません。を使用しconnection_managerてすべての接続をシャットダウンします。

于 2013-02-22T15:41:06.563 に答える