2009-08-25 90 views
1

我在哪裏TCP套接字端口上監聽的問題,並已在很長的時間完美的工作 - 這是處理多個連接,並且似乎完美的工作。然而,偶爾調用accept()時創建一個新的連接接受()調用失敗,而且我從系統得到以下錯誤字符串:監聽套接字死亡意外

10022: An invalid argument was supplied.

很顯然,當你調用accept會發生這種情況()在不再監聽的套接字上,但是我自己沒有關閉套接字,並且沒有被通知該套接字上的任何錯誤。

任何人都可以想到的任何原因監聽套接字將停止聽,不然怎麼可能會生成上面提到的錯誤?

+2

你檢查你所有的返回值不夠仔細,以確定你沒有被通知套接字上的任何錯誤的? – kmarsh 2009-08-25 12:55:17

回答

3

一些可能性:

  • 你的代碼的其他部分覆蓋了句柄值。檢查它是否發生了變化(在其他地方保留一個副本並進行比較,打印出來,在調試器中寫入斷點等等)。

  • 什麼東西堵住了把手。

  • 互動與越野車的Winsock LSP。

1

我想到的一件事是系統備用或休眠模式。我不確定這些事件是如何由winsock庫處理的。可能是網絡接口(部分)關閉。

1

這可能是有意義的調試插座的線程(或者帶有IDE或通過反彙編),觀察其對任何可能導致它停止監聽執行。