WSASendDisconnect 函数 (winsock2.h)
WSASendDisconnect 函数启动套接字的连接终止并发送断开连接数据。
语法
int WSAAPI WSASendDisconnect(
[in] SOCKET s,
[in] LPWSABUF lpOutboundDisconnectData
);
参数
[in] s
标识套接字的描述符。
[in] lpOutboundDisconnectData
指向传出断开连接数据的指针。
返回值
如果未发生错误, 则 WSASendDisconnect 返回零。 否则,将返回值 SOCKET_ERROR,并且可以通过调用 WSAGetLastError 检索特定的错误代码。
错误代码 | 含义 |
---|---|
在使用此函数之前,必须成功调用 WSAStartup 。 | |
网络子系统发生故障。 | |
参数 lpOutboundDisconnectData 不是 NULL,并且服务提供程序不支持断开连接数据。 | |
阻止 Windows 套接字 1.1 调用正在进行,或者服务提供商仍在处理回调函数。 | |
仅) (面向连接的套接字未连接套接字。 | |
:描述符不是套接字。 | |
lpOutboundDisconnectData 参数未完全包含在用户地址空间的有效部分。 |
注解
WSASendDisconnect 函数用于面向连接的套接字上,以禁用传输,并启动连接终止以及断开连接数据的传输(如果有)。 这等效于关闭 (SD_SEND) ,不同之处在于 WSASendDisconnect 还允许在支持其) 的协议中发送断开连接数据 (。
成功发出此函数后,不允许后续发送。
lpOutboundDisconnectData 参数(如果不是 NULL)指向包含要发送到远程方以供使用 WSARecvDisconnect 检索的传出断开连接数据的缓冲区。
注意 Windows 上 TCP/IP 的本机实现不支持断开连接数据。 只有在其 WSAPROTOCOL_INFO 结构中具有XP1_DISCONNECT_DATA标志的 Windows 套接字提供程序才支持断开连接数据。 使用 WSAEnumProtocols 函数获取所有已安装提供程序 的WSAPROTOCOL_INFO 结构。
无论套接字上的SO_LINGER设置如何, WSASendDisconnect 函数都不会阻止。
应用程序不应依赖于在调用 WSASendDisconnect 后能够重用套接字。 具体而言,不需要 Windows 套接字提供程序来支持在此类套接字上使用 连接/WSAConnect 。
注意 在发出阻止的 Winsock 调用(如 WSASendDisconnect)时,Winsock 可能需要等待网络事件,才能完成调用。 在这种情况下,Winsock 执行可发出警报的等待, (在同一线程上计划的 APC) 异步过程调用可能会中断。 在 APC 内发出另一个阻止 Winsock 调用,该调用中断了同一线程上正在进行的阻止 Winsock 调用将导致未定义的行为,并且 Winsock 客户端绝不能尝试。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | winsock2.h |
Library | Ws2_32.lib |
DLL | Ws2_32.dll |