关于Winsock:Winsock编程注意事项:连接设置和拆解

xiaoxiao2021-09-22  168

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

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

也可以(对于支持此协议的协议)在连接拆除时在端点之间交换用户数据。 启动拆卸的结束可以调用WSASendDisconnect函数来指示不再发送数据并启动连接拆除序列。 对于某些协议,拆卸的一部分是从拆卸启动器传送断开连接数据。 在收到远程端已启动拆除的通知(通常通过FD_CLOSE指示)后,可以调用WSARecvDisconnect函数来接收断开连接数据(如果有)。

要说明如何使用断开连接数据,请考虑以下方案。 客户端/服务器应用程序的客户端一半负责终止套接字连接。 与终止一致,它提供(使用断开连接数据)它与服务器一起处理的事务总数。 服务器依次响应它已与所有客户端处理的累计事务总数。 呼叫和指示的顺序可能如下:

Client sideServer side(1)调用WSASendDisconnect以结束会话和供应事务总计。  (2) 获取FD_CLOSE,recv,返回值为零,或者从WSARecv返回WSAEDISCON错误,指示正在进行正常关闭。 (3)调用WSARecvDisconnect以获取客户端的事务总数。 (4)计算所有交易的累计总计。 (5)调用WSASendDisconnect以传输总计。(6) 接收FD_CLOSE指示。(5a) 调用closesocket。(7) 调用WSARecvDisconnect以接收和存储累计的总事务总数。 

(8)调用closesocket。

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

 

转载请注明原文地址: https://www.6miu.com/read-4823652.html

最新回复(0)