0

クライアント アプリケーションが接続できる C++ サーバーがありますが、クライアントが接続した後にサーバーがクラッシュします。コメントアウトすることで原因となっているコードを見つけ、クラッシュしなくなりました。クラッシュする部分は、読み取りの準備ができたときです。クライアントからメッセージを送信する前にクラッシュするため、この時点を過ぎないとわかっています。以下は読み取りコードです

try
{
    Logger::Log("Client Listing for message!");
    boost::asio::async_read(socket_,
        boost::asio::buffer(readMsg_.Data(), Message::header),
        boost::bind(&Client::HandleReadHeader, this,
        boost::asio::placeholders::error));
}
catch (std::exception& e)
{
    Logger::Log("Error: " + std::string(e.what()));
}

編集: try-catch ステートメントはクラッシュするだけで何もキャッチしないため、何が問題なのかわかりません

編集*: このコードを起動する GUI プロジェクトを再作成しました。魔女は dll です。そのプロジェクトを再作成した後、ソリューション内の別のプロジェクト以外に変更はありません。クラッシュすることはなくなりましたが、throw-catch ステートメントがエラーをキャッチするようになりました。

エラー: ネットワーク接続はローカル システムによって中止されました

なぜ中止になったのか不明

4

1 に答える 1

0

クラッシュは、プロジェクトで起こっている奇妙なことでした。プロジェクトを再作成しましたが、何も変更せず、クラッシュが停止し、try-catch がエラーを検出しました。エラーは、エラーでオブジェクトを削除したことです。次に、ローカルシステムが接続を閉じたというエラーが発生しました。これは、これの代わりに shared_from_this() を使用するのを忘れたためです。

于 2013-08-11T14:12:44.553 に答える