[1] TCP通信原理(见"4.tcp"目录)
TCP通信分服务端和客户端:
服务端: 建立服务,等待客户端连接,响应客户端的请求
客户端: 连接服务端,请求服务端
具体原理如下:
1. 建立连接
《三次握手.bmp》
2. 断开连接
《四次挥手.bmp》
3. 运行(服务端如何建立?客户端如何连接?主要是流程及背后原理)
《运行原理.bmp》
注意: 1. 监听套接字(套接字被设置成监听模式,专门接受客户端连接请求)
2. 流程每一步的作用
4. 数据传输
《数据传输原理.bmp》
建立连接后,好像在服务器套接字(跟客户端连接的套接字)和客户端套接字之间建立了两个管道,用于
数据的发送和接收,所以客户端套接字或服务端套接字(跟客户端连接的套接字)都有两个缓冲区--接收缓冲区和发送缓冲区
[2] TCP通信实现
1. 头文件
跟UDP相同
2. 数据结构
跟UDP相同
3. 函数
服务器实现流程:
1. 创建套接字(用于监听) 买手机
sockfd = socket(AF_INET, SOCK_STREAM, 0);
2. 绑定服务端地址(ip和port) 插入SIM
ret = bind(sockfd, ..., ...);
3. 设置监听模式 开机
/*
* @param[in] sockfd 需要设置为监听模式的套接字
* @param[in] backlog 最大的等待连接个数
* @return @li 0 设置成功
* @li -1 设置失败(错误码见errno)
*/
int listen(int sockfd, int backlog);
4. 接收并建立和客户端连接(建立新套接字) 接听
/*
* @param[in] sockfd 监听套接字
* @param[out] addr 客户端的地址(ip和port)
* @param[in] addrlen addr地址缓冲区的字节数
* @param[out] addrlen 实际的地址大小
* @return @li >= 0 新建的套接字(跟客户端连接的套接字)
* @li -1 设置失败(错误码见errno)
* @notes 监听队列为空时, accept默认会阻塞
*/
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
5. 接收数据 通话
/*
* @param[in] sockfd 跟客户端连接的套接字
* @param[out] buf 接收数据的缓冲
* @param[in] len 希望接收的字节数
* @param[in] flags 0
* @return 实际接收到的字节数
*
Linux TCP通信详解&UDP聊天室(6.9)
最新推荐文章于 2023-03-13 23:03:06 发布
本文深入探讨了Linux下的TCP通信,包括TCP连接的三次握手和四次挥手过程,服务端的监听套接字创建、绑定、监听、接收连接及数据传输,以及客户端的连接、发送和接收数据的步骤。详细解析了TCP通信的关键函数及其用法。
摘要由CSDN通过智能技术生成