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 中提供特定的错误代码。
错误代码 | 含义 |
---|---|
网络子系统失败。 | |
套接字的本地地址已在使用中,并且未将套接字标记为允许通过SO_REUSEADDR重复使用地址。 此错误通常在 Bind 时发生,但如果绑定部分通配符地址 (涉及ADDR_ANY) ,并且需要在此函数时提交特定地址,则可能会延迟到此函数。 | |
当回调正在进行时,将调用函数。 | |
套接字尚未与 LPWSPBind 绑定。 | |
套接字已连接。 | |
无法提供更多套接字描述符。 | |
未提供任何缓冲区空间。 | |
:描述符不是套接字。 | |
引用的套接字不是支持 LPWSPListen 操作的类型。 |
注解
为了接受连接,首先使用绑定到具有 LPWSPBind 的本地地址的 LPWSPSocket 创建套接字,使用 LPWSPListen 指定传入连接的积压工作,然后使用 LPWSPAccept 接受连接。 LPWSPListen 仅适用于面向连接的套接字, (例如,SOCK_STREAM) 。 套接字处于被动模式,其中传入的连接请求得到确认并排队等待 Windows 套接字 SPI 客户端接受。
此函数通常由一次可以有多个连接请求的服务器使用:如果连接请求到达时队列已满,客户端将收到一个错误,指示 WSAECONNREFUSED。
当没有可用的描述符时,LPWSPListen 应继续合理运行。 它应接受连接,直到队列被清空。 如果描述符可用,稍后对 LPWSPListen 或 LPWSPAccept 的 调用会将队列重新填充到当前或最新的积压工作(如果可能),并恢复侦听传入连接。
Windows 套接字 SPI 客户端可以在同一套接字上多次调用 LPWSPListen 。 这会影响更新侦听套接字的当前积压工作。 如果挂起的连接数多于新的 积压工作 值,将重置并删除多余的挂起连接。
积压工作参数 (以无提示方式) 为由服务提供商确定的合理值。 非法值将替换为最接近的法定值。 没有用于找出实际积压工作值的标准预配。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
标头 | ws2spi.h |