Linux C语言程序设计——基于TCP的网络编程
发布时间
阅读量:
阅读量
1、基本流程
以下图表展示了遵循TCP协议的客户端与服务器端程序通常执行的操作流程

在服务器完成socket()、 bind()、 listen()等初始化操作之后,会调用accept()函数进入阻塞状态,等待客户端的连接请求。客户端在初始化socket()后,通过connect()函数发送SYN段,并处于等待服务器响应的状态。当服务器回应SYN-ACK段后,客户端接收到该段信息并从connect()函数返回,同时发送ACK段作为应答。服务器在接收到ACK段后,从accept()函数返回,从而完成连接的建立。
数据传输的流程如下:
连接建立完成后,TCP协议支持全双工通信模式。然而,在常规的客户端/服务器程序中,通常由客户端主动发起请求,而服务器则被动地处理请求,并以一问一答的方式进行交互。因此,在服务器从accept()函数返回后,会立即调用read()函数读取来自客户端的数据。此时若无数据到达,则read()将进入阻塞状态等待数据的到来。与此同时,客户端会调用write()函数向服务器发送请求内容。当服务器成功读取到该请求后从read()返回,并对请求内容进行
全部评论 (0)
还没有任何评论哟~
