Linux TCP通信详解&UDP聊天室(6.9)

本文深入探讨了Linux下的TCP通信,包括TCP连接的三次握手和四次挥手过程,服务端的监听套接字创建、绑定、监听、接收连接及数据传输,以及客户端的连接、发送和接收数据的步骤。详细解析了TCP通信的关键函数及其用法。
摘要由CSDN通过智能技术生成

[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 实际接收到的字节数
           *

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值