4

特定のアプリケーションのすべてのソケットがダウン/クローズし、再び開くことができない原因を理解しようとしています。

私のアプリケーションには複数のソケット (http、ftp など) があり、しばらくは実行されますが、ある時点 (ある程度決定論的) ですべてのソケットがダウンします (これは で確認できますProcMon)。

恐ろしいException: An established connection was aborted by the software in your host machine例外が発生します。その後、ソケットを再度開こうとすると、WSAStartup呼び出されていない可能性があるというエラーが表示されます。

このような問題をデバッグするために使用できるツールや手法にはどのようなものがありますか?

4

1 に答える 1

0

提案ごとに、これを答えとして再投稿しています。

皆さんのご指導のおかげで、この問題を解決できました。私は電話をかけWSAStartupていましたがWSACleanup、不均一な回数でした。エクストラWSACleanupヒットが発生すると、アプリケーションのすべてのスレッドですべてのソケットが閉じられます ( MSDN のドキュメントを参照してください)。

マルチスレッド環境では、WSACleanup はすべてのスレッドの Windows ソケット操作を終了します。

それぞれに単純な静的カウンターをスタートアップ (++) に追加し、カウンターが >0 の場合はすべてクリーンアップを呼び出します。問題が解決しました。

これが他の人に役立つことを願っています。

于 2014-03-19T16:05:34.157 に答える