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 に答える