侦听 SAN 上的连接

下图概述了 Windows 套接字交换机如何将 SAN 套接字设置为确认和队列,即侦听来自远程对等方的传入连接请求。 以下主题更详细地描述了侦听过程。

显示 Windows 套接字交换机设置 SAN 套接字以确认和排队来自远程对等方传入连接请求的过程的关系图。

当 Windows 套接字交换机收到由应用程序发起的 WSPListen 调用时,该交换机始终首先调用 TCP/IP 提供程序的 WSPListen 函数,以将 TCP/IP 提供程序的套接字设置为确认和排队传入连接请求。 如果应用程序的套接字绑定到 SAN NIC 的 IP 地址或通配符 IP 地址,则交换机还会使用相应的 SAN 服务提供程序来创建并绑定其他套接字。 有关详细信息,请参阅 创建和绑定 SAN 套接字

侦听传入连接请求

请求 SAN 服务提供商创建和绑定 SAN 套接字后,交换机会调用 SAN 服务提供商的 WSPListen 函数,使 SAN 套接字侦听传入连接,并指定 SAN 服务提供商可以排队的传入连接请求数的限制。

设置为接受传入连接

交换机仅在非阻止模式下接受传入连接。 交换机调用 SAN 服务提供商的 WSPEventSelect 函数,以将套接字置于非阻止模式,并请求传入连接事件的通知。 在此调用中,开关传递FD_ACCEPT代码以及要与该代码关联的事件对象。 在 SAN 服务提供程序在其套接字上收到以前为侦听而建立的连接请求后,SAN 服务提供商调用 Win32 SetEvent 函数来向关联的事件对象发出信号。 交换机侦听专用线程中的传入连接事件,并在事件对象发出信号后接受或拒绝连接。 有关详细信息,请参阅 接受连接请求

指示拒绝对远程对等方的连接请求

如果连接请求到达,并且 SAN 服务提供商的积压连接请求已满,则 SAN 服务提供商应立即向远程对等方表明它拒绝了连接请求。 在这种情况下,SAN 服务提供程序不会向事件对象发出信号来通知交换机接受或拒绝连接请求。 然后,远程对等方上的 SAN 服务提供程序必须使 WSPConnect 调用启动的连接操作失败,并显示 WSAECONNREFUSED 错误代码。