连接设置和拆解

WSAAccept 函数允许应用程序在决定是否接受传入连接请求之前获取调用方信息,例如调用方标识符和服务质量。 这是通过对应用程序提供的条件函数的回调完成的。

如果服务提供商支持此功能,则 WSAConnect 函数和 WSAAccept 的条件函数中的参数指定的用户到用户数据可以在建立连接期间传输到对等方。

支持此) 的协议也可能 (在连接断开时在终结点之间交换用户数据。 启动拆解的末尾可以调用 WSASendDisconnect 函数,以指示不再发送数据并启动连接拆解序列。 对于某些协议,拆解的一部分是交付与拆解发起程序断开连接的数据。 在收到远程端通常由FD_CLOSE指示) 启动拆解 (的通知后,可以调用 WSARecvDisconnect 函数来接收断开连接数据(如果有)。

若要说明如何使用断开连接数据,请考虑以下方案。 客户端/服务器应用程序的客户端一半负责终止套接字连接。 与终止同步,它使用断开连接数据提供 (,) 它与服务器处理的事务总数。 服务器反过来使用它处理的所有客户端的累计事务总数进行响应。 调用和指示的序列可能如下所示:

客户端 服务器端
(1) 调用 WSASendDisconnect 以结束会话并提供事务总数。
(2) 获取FD_CLOSE、返回值为零的 recvWSARecv 返回的 WSAEDISCON 错误,指示正常关闭正在进行。
(3) 调用 WSARecvDisconnect 以获取客户端的事务总数。
(4) 计算所有事务的累积总计。
(5) 调用 WSASendDisconnect 以传输总计。
(6) 接收FD_CLOSE指示。 (5a) 调用 closesocket
(7) 调用 WSARecvDisconnect 来接收和存储事务的累积总计。
(8) 调用 closesocket

 

请注意,步骤 (5a) 必须遵循步骤 (5) ,但与步骤 (6) 、 (7) 或 (8) 没有计时关系。