1

TCP ソケットがポートでリッスンしているという問題があり、非常に長い間完全に機能しています。複数の接続が処理されており、問題なく動作しているようです。ただし、新しい接続を作成するために accept() を呼び出すと、accept() 呼び出しが失敗し、システムから次のエラー文字列が返されることがあります。

10022: An invalid argument was supplied.

どうやらこれは、リッスンしていないソケットで accept() を呼び出したときに発生する可能性がありますが、私は自分でソケットを閉じておらず、そのソケットでエラーが通知されていません。

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

4

3 に答える 3

3

いくつかの可能性:

  • コードの他の部分がハンドル値を上書きしました。変更されているかどうかを確認します(コピーを別の場所に保持し、比較、印刷、デバッガーでの書き込みのブレークポイントなど)。

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

  • バグのあるWinsockLSPとの相互作用。

于 2009-08-25T12:54:04.680 に答える
1

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

于 2009-08-25T12:55:10.283 に答える
1

ソケットのスレッドを (IDE または逆アセンブラーを使用して) デバッグし、その実行を監視して、リッスンを停止する原因となっている可能性があるものを監視することは理にかなっている場合があります。

于 2009-08-27T14:21:25.313 に答える