DisconnectEx函数关闭套接字连接,并允许重用套接字句柄。Windows 95/98不支持DisconnectEx函数。。

平台

SDK:Windows

简介

套接字

BOOL DisconnectEx(

__in SOCKET hSocket,

__in LPOVERLAPPED lpOverlapped,

__in DWORD dwFlags,

__in DWORD reserved

);

hSocket[in] 已连接的套接字句柄,也就是与客户端通讯的SOCKET。

lpOverlapped[in]

OVERLAPPED

结构体的指针,用于接收操作的结果。

如果此值为 NULL,则表示同步调用,直到操作完毕后才返回(无论成功或失败)。

如果不为 NULL,则表示异步调用,参数可通过 GetQueuedCompletionStatus 函数返回。

dwFlags[in] 函数调用的标记,如果设置为0,则为没有标记,如果是重用这个socket则设置为

TF_REUSE_SOCKET。

reserved[in] 保留,必须设置为0,否则返回 WSAEINVAL。

返回值:

如果成功返回TURE,否则返回FALSE,可以通过调用the

WSA

GetLastError获取失败信息

备注:

此函数只能应用于面向连接的 SOCKET(SOCK_STREAM、SOCK_SEQPACKET、SOCK_RDM)

如果函数返回 FALSE,WSAGetLastError 可能会返回:

WSA_IO_PENDING(997):其实函数已经执行成功但工作正在处理,稍候可以通过 GetQueuedCompletionStatus 接收到完成通知。

WSAENOTCONN(10057):原因是hSocket 未与对端建立连接(可能在等候 AcceptEx 阶段),则会返回此错误,这时可以忽略此错误值而不影响 SOCKET 重用

当操作成功后(无论是同步或异步收到通知),重新调用 CreateIoCompletionPort 对 SOCKET 绑定时,都会返回一个重复