LPWSPLISTEN 回调函数 (ws2spi.h)

LPWSPListen 函数建立套接字来侦听传入连接。

语法

LPWSPLISTEN Lpwsplisten;

int Lpwsplisten(
  [in]  SOCKET s,
  [in]  int backlog,
  [out] LPINT lpErrno
)
{...}

参数

[in] s

标识绑定、未连接的套接字的描述符。

[in] backlog

挂起的连接队列可以增长到的最大长度。 如果此值为 SOMAXCONN,则服务提供商应将积压工作设置为最大“合理”值。 没有用于找出实际积压工作值的标准预配。

[out] lpErrno

指向错误代码的指针。

返回值

如果未发生错误, LPWSPListen 将 返回零。 否则,返回值 SOCKET_ERROR,并在 lpErrno 中提供特定的错误代码。

错误代码 含义
WSAENETDOWN
网络子系统失败。
WSAEADDRINUSE
套接字的本地地址已在使用中,并且未将套接字标记为允许通过SO_REUSEADDR重复使用地址。 此错误通常在 Bind 时发生,但如果绑定部分通配符地址 (涉及ADDR_ANY) ,并且需要在此函数时提交特定地址,则可能会延迟到此函数。
WSAEINPROGRESS
当回调正在进行时,将调用函数。
WSAEINVAL
套接字尚未与 LPWSPBind 绑定。
WSAEISCONN
套接字已连接。
WSAEMFILE
无法提供更多套接字描述符。
WSAENOBUFS
未提供任何缓冲区空间。
WSAENOTSOCK
:描述符不是套接字。
WSAEOPNOTSUPP
引用的套接字不是支持 LPWSPListen 操作的类型。

注解

为了接受连接,首先使用绑定到具有 LPWSPBind 的本地地址的 LPWSPSocket 创建套接字,使用 LPWSPListen 指定传入连接的积压工作,然后使用 LPWSPAccept 接受连接。 LPWSPListen 仅适用于面向连接的套接字, (例如,SOCK_STREAM) 。 套接字处于被动模式,其中传入的连接请求得到确认并排队等待 Windows 套接字 SPI 客户端接受。

此函数通常由一次可以有多个连接请求的服务器使用:如果连接请求到达时队列已满,客户端将收到一个错误,指示 WSAECONNREFUSED

当没有可用的描述符时,LPWSPListen 应继续合理运行。 它应接受连接,直到队列被清空。 如果描述符可用,稍后对 LPWSPListenLPWSPAccept 的 调用会将队列重新填充到当前或最新的积压工作(如果可能),并恢复侦听传入连接。

Windows 套接字 SPI 客户端可以在同一套接字上多次调用 LPWSPListen 。 这会影响更新侦听套接字的当前积压工作。 如果挂起的连接数多于新的 积压工作 值,将重置并删除多余的挂起连接。

积压工作参数 (以无提示方式) 为由服务提供商确定的合理值。 非法值将替换为最接近的法定值。 没有用于找出实际积压工作值的标准预配。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
标头 ws2spi.h

另请参阅

LPWSPAccept

LPWSPConnect

LPWSPSocket