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