Windows 套接字兼容性问题

Windows 套接字 2 继续支持所有 Windows 套接字 1.1 语义和函数调用,但处理伪阻止的语义和函数调用除外。 由于 Windows 套接字 2 仅在 32 位的抢占式计划环境中运行,因此无需实现 Windows 套接字 1.1 中的伪阻止。 这意味着永远不会指示 WSAEINPROGRESS 错误代码,并且以下 Windows 套接字 1.1 函数不适用于 Windows 套接字 2 应用程序:

  • WSACancelBlockingCall
  • WSAIsBlocking
  • WSASetBlockingHook
  • WSAUnhookBlockingHook

编写为利用伪阻止的 Windows 套接字 1.1 程序将继续正常运行,因为它们链接到Winsock.dll或Wsock32.dll。 两者都继续支持完整的 Windows 套接字 1.1 函数集。 为了使程序成为 Windows 套接字 2 应用程序,必须进行一些代码修改。 在大多数情况下,可以替换线程的明智使用,以适应使用阻塞挂钩函数完成的处理。