WSASendDisconnect 函数 (winsock2.h)

WSASendDisconnect 函数启动套接字的连接终止并发送断开连接数据。

语法

int WSAAPI WSASendDisconnect(
  [in] SOCKET   s,
  [in] LPWSABUF lpOutboundDisconnectData
);

参数

[in] s

标识套接字的描述符。

[in] lpOutboundDisconnectData

指向传出断开连接数据的指针。

返回值

如果未发生错误, 则 WSASendDisconnect 返回零。 否则,将返回值 SOCKET_ERROR,并且可以通过调用 WSAGetLastError 检索特定的错误代码。

错误代码 含义
WSANOTINITIALIZED
在使用此函数之前,必须成功调用 WSAStartup
WSAENETDOWN
网络子系统发生故障。
WSAENOPROTOOPT
参数 lpOutboundDisconnectData 不是 NULL,并且服务提供程序不支持断开连接数据。
WSAEINPROGRESS
阻止 Windows 套接字 1.1 调用正在进行,或者服务提供商仍在处理回调函数。
WSAENOTCONN
仅) (面向连接的套接字未连接套接字。
WSAENOTSOCK
:描述符不是套接字。
WSAEFAULT
lpOutboundDisconnectData 参数未完全包含在用户地址空间的有效部分。

注解

WSASendDisconnect 函数用于面向连接的套接字上,以禁用传输,并启动连接终止以及断开连接数据的传输(如果有)。 这等效于关闭 (SD_SEND) ,不同之处在于 WSASendDisconnect 还允许在支持其) 的协议中发送断开连接数据 (。

成功发出此函数后,不允许后续发送。

lpOutboundDisconnectData 参数(如果不是 NULL)指向包含要发送到远程方以供使用 WSARecvDisconnect 检索的传出断开连接数据的缓冲区。

注意 Windows 上 TCP/IP 的本机实现不支持断开连接数据。 只有在其 WSAPROTOCOL_INFO 结构中具有XP1_DISCONNECT_DATA标志的 Windows 套接字提供程序才支持断开连接数据。 使用 WSAEnumProtocols 函数获取所有已安装提供程序 的WSAPROTOCOL_INFO 结构。
 
WSASendDisconnect 函数不会关闭套接字,在调用 closesocket 之前,不会释放附加到套接字的资源。

无论套接字上的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

另请参阅

Winsock 函数

Winsock 参考

connect

socket