• 締切済み

不定期のサーバの強制終了

Windows上で動作するWinsock2を使用したサーバプログラムを作成し動かしているのですが「OSのスタンバイ→コントロールパネルからネットワーク接続の変更」を何度か繰り返していると不定期にサーバが強制終了してしまいます。 Winsockのバグなどで上記事象が発生しうる要因はありますでしょうか? ちなみにそのサーバプログラムはユーザが要求するポート番号をLISTENし指定のサーバへリレーするのみの単純なものです。 コンパイラはVisual C++です。 よろしくお願い致します。

みんなの回答

  • txrx
  • ベストアンサー率45% (83/184)
回答No.2

> 事象はReleaseでのみ発生します。 これは、困った状態ですね。 VC++のリモートデバッグを利用すると解決するかもしれません。 デバッグ版を動作させるのではなく、既に動作しているリリース版にリモートでアタッチできると思います。 VC6は、使用しなくなったので忘れてしまいましたが、VC.NETであれば、リリース版のプロセスにリモートでアタッチできました。またVC.NETでは、リリース版でもソースレベルで表示できました。 エディションによっては出来ないかもしれませんが・・・、できるとすればかなり有効です。ちゃんと例外もキャッチできましたよ。(C++ネイティブでしたが・・・) > LINTEN中でネットワーク接続・・・SOCKETの情報が変わることはあるのでしょうか? ごめんなさい。これはちょっと自信有りません。 ただ、ネットワーク接続の変更によってサーバが落ちるのであれば、何らかの関係はありそうですね。

noname#11716
質問者

お礼

リモートでのアタッチは試してみる価値がありそうですね。早速試してみます。 当初はWinsockのバグと思っていたんですが...。 setsckopt()でのSO_REUSEADDRのバグなどサーバサイドでのバグがいくつか報告されていたので。 見切りが早かったですね。

  • txrx
  • ベストアンサー率45% (83/184)
回答No.1

サーバが強制終了?とは、サーバプログラムがOSから終了させられる?と言うことですよね? サーバ機やOS等は無事なんですね。 Winsockのバグを考える前に、なぜ強制終了させられるのかを調べる方が先決と思います。 そこそこの開発環境を使っていればブレークポイントや例外発生時に止めることが出来ると思いますので、そこを先に確かめましょう。 LISTENしている最中にネットワーク接続が変更されるわけですから、当然異常動作となります。 エラー処理を重点的に確認してみてはいかがでしょうか? C++ならtry catchで例外も受け止められます。

noname#11716
質問者

補足

>Winsockのバグを考える前に、なぜ強制終了させられるのかを調べる方が先決と思います。 そこそこの開発環境を使っていればブレークポイントや例外発生時に止めることが出来ると思いますので、そこを先に確かめましょう。 デバッガを使用しての検証は何度か行ったのですが、事象が再現しないんです。 当然、DebugとReleaseの違いはあるとは思うんですが、不定期に発生するので、事象発生時の情報のトレースができていないのが現状です。(事象はReleaseでのみ発生します。) >LISTENしている最中にネットワーク接続が変更されるわけですから、当然異常動作となります。 エラー処理を重点的に確認してみてはいかがでしょうか? C++ならtry catchで例外も受け止められます。 LINTEN中でネットワーク接続の変更によってLISTENしているSOCKETの情報が変わることはあるのでしょうか? 個人的にはクライアントからのリクエストが無い限りSOCKETの情報が変わることは無いと思ったのですが、勘違いだったらすいません。

関連するQ&A

専門家に質問してみよう