Winsock-10038错误-Win2K3服务器-令人困惑的行为

时间:2020-03-06 14:24:55  来源:igfitidea点击:

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

解决方案

Winsock错误10038的意思是"试图对不是套接字的对象进行操作"。

查找有关错误代码的信息的小技巧(对各种Windows错误代码都有用):

  • 打开命令提示符
  • 键入" net helpmsg 10038"

应用程序用什么语言编写?如果是C / C ++,可能是我们使用的套接字句柄无效吗?

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

另一个可能的原因是分层winsock提供程序的存在。 cmd提示符下的" netsh winsock show"将向我们显示已安装的提供程序,我们可以尝试删除所有非Microsoft的提供程序。

非常感谢a_mole提供检查分层winsock提供程序的想法。我们的某些PC和TimesTen DB出现问题。当我们尝试安装和ODBC客户端DSN时,会出现10038错误。在检查受影响的PC的netsh输出时,我们发现它们安装了Wave Systems的Embassy Trust Suite。显然,戴尔已在其某些PC上预装了此软件。无论如何,在卸载此软件时,问题已解决。

再次感谢