0

尝试通过套接字发送消息失败,出现 WinSock 错误 10038。大约 40 秒后,从同一个套接字成功接收到消息,随后 send() 在同一个套接字中也成功。此行为已在 Windows Server 2003 中出现。这是 WinSock 和 Windows Server 2003 的任何已知行为吗?

4

3 回答 3

4

Winsock 错误 10038 表示“尝试对非套接字的操作进行操作”。

查找错误代码信息的小技巧(适用于各种 Windows 错误代码):

  • 打开命令提示符
  • 输入“net helpmsg 10038”

您的应用程序是用什么语言编写的?如果是 C/C++,会不会是您使用了无效的套接字句柄?

于 2008-09-19T12:46:49.627 回答
1

非常感谢 a_mole 检查分层的 winsock 提供程序的想法。我们的一些 PC 和 TimesTen DB 存在问题。当我们尝试设置 ODBC 客户端 DSN 时,我们收到 10038 错误。在检查受影响 PC 的 netsh 输出时,我们发现他们安装了 Wave Systems 的 Embassy Trust Suite。显然戴尔在他们的一些个人电脑上预装了这个。不管怎样,卸载这个软件,问题就解决了。

再次感谢

于 2010-02-03T17:38:44.370 回答
0

不是平台问题,我可以保证。最有可能的是,您用于访问套接字句柄的任何变量都不是线程安全的,并且在创建实际套接字之前在 send() 调用中使用。

另一个可能的原因是存在分层的 Winsock 提供程序。cmd 提示符下的“netsh winsock show”将向您显示已安装的提供程序,您可以尝试删除任何非微软的提供程序。

于 2009-02-20T23:46:34.510 回答