2009-08-25 113 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或通过反汇编),观察其对任何可能导致它停止监听执行。