代码之家  ›  专栏  ›  技术社区  ›  Thomi

监听插座意外死亡

  •  1
  • Thomi  · 技术社区  · 16 年前

    我遇到了一个问题,一个TCP套接字正在监听一个端口,并且已经运行了很长一段时间了——它处理了多个连接,并且看起来工作得很完美。但是,偶尔在调用accept()创建新连接时,accept()调用会失败,我从系统中得到以下错误字符串:

    10022: An invalid argument was supplied.

    显然,当您在不再侦听的套接字上调用accept()时,可能会发生这种情况,但我自己没有关闭该套接字,并且没有收到该套接字上任何错误的通知。

    有人能想到为什么监听插座会停止监听,或者如何产生上述错误的原因吗?

    3 回复  |  直到 16 年前
        1
  •  3
  •   janm    16 年前

    一些可能性:

    • 代码的其他部分重写了句柄值。检查它是否已更改(在其他地方保留一个副本并进行比较、打印出来、在调试器中写入时中断点,等等)。

    • 有东西把把手关上了。

    • 与Buggy Winsock LSP交互。

        2
  •  1
  •   Frank Bollack    16 年前

    我想到的一件事是系统待机或休眠模式。我不知道Winsock库是如何处理这些事件的。可能是网络接口(部分)已关闭。

        3
  •  1
  •   Rushyo    16 年前

    调试套接字线程(使用IDE或通过反汇编程序)并监视其执行过程中可能导致其停止侦听的任何内容可能是有意义的。

    推荐文章