2009-08-25 8 views
1

TCPソケットがポートをリッスンしていて、非常に長い間、完全に動作しています。複数の接続が処理されていて、問題なく動作しているようです。しかし、時折受け入れる()の呼び出しが失敗した新しい接続を作成するには()を受け入れ呼び出し、と私はシステムから、次のエラー文字列を取得する場合:あなたは(受け入れ呼び出すときどうやらこの現象が発生することができます予期せずリスニングソケットが鳴っています

10022: An invalid argument was supplied.

を)ソケットを閉じていませんでしたが、ソケットのエラーが通知されていません。

リスニングソケットがリッスンを停止する理由、または上記のエラーがどのように生成されるのかについては、誰も考えられますか?

+2

すべての戻り値を慎重にチェックして、そのソケットのエラーが通知されていないことを確認していますか? – kmarsh

答えて

3

いくつかの可能性:

  • あなたのコードのいくつかの他の部分は、ハンドル値を上書きしました。それが変更されているかどうかを確認してください(他の場所にコピーを保存して比較、プリントアウト、ブレークポイントのデバッガでの書き込みなど)。

  • 何かがハンドルを閉じました。

  • バグのあるWinsock LSPとのやりとり。

1

私の頭に浮かぶのは、システムスタンバイモードまたはハイバネーションモードです。これらのイベントがwinsockライブラリによってどのように処理されるかはわかりません。ネットワークインターフェイスが(部分的に)シャットダウンされている可能性があります。

1

ソケットのスレッドを(IDEまたはディスアセンブラを使用して)デバッグし、リスニングの停止を引き起こしている可能性のあるものの実行を監視することができます。

関連する問題