TCP学习

TCP : 传输控制协议   传输层
    流式套接字
1. TCP特点:
    1.面向连接
    2.安全、可靠
    3.面向数据流
    4.机制复杂、占用资源开销大

    三次握手:
        指建立tcp连接时,需要客户端和服务端总共发送三次报文确认连接。
    四次挥手:
        断开一个tcp连接,需要客户端和服务端发送四个报文以确认断开。


2. 编程模型

   client: socket--->connect--->send/write--->close
   server:    socket--->bind--->listen--->accept---> recv/read--->close
    
3. 函数接口:
    1.socket
      socket(AF_INET, SOCK_STREAM, 0);
    
    2.connect
      int connect(int sockfd, const struct sockaddr *addr,
                   socklen_t addrlen);
      功能:
        发送三次握手链接请求
      参数:
        sockfd:套接字文件描述符
        addr:存放目的地址空间首地址
        addrlen:目的地址长度
      返回值:
        成功返回0 
        失败返回-1 
        
    3.send
      ssize_t send(int sockfd, const void *buf, size_t len, int flags);
      功能:
        发送数据
      参数:
        sockfd:套接字文件描述符
        buf:存放数据空间首地址
        len:数据长度
        flag:属性默认为0 
      返回值:
        成功返回发送字节数
        失败返回-1 
        
    4.recv
      ssize_t recv(int sockfd, void *buf, size_t len, int flags);
      功能:
        接收数据 
      参数:
        sockfd:套接字文件描述符
        buf:存放数据空间首地址 
        len:最多接收数据长度 
        flags:接收属性默认为0 
      返回值:
        成功返回实际接收字节数
        失败返回-1 
        连接断开返回0 

    5.bind
      int bind(int sockfd, const struct sockaddr *addr,
                socklen_t addrlen);

    6.listen
      int listen(int sockfd, int backlog);
      功能:
        监听三次握手链接请求
      参数:
        sockfd:套接字文件描述符
        backlog:最多允许等待尚未处理的三次握手链接个数
      返回值:
        成功返回0 
        失败返回-1 

    10.accept
       int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
       功能:
          处理三次握手等待队列中的第一个请求并建立一个用来通信的新套接字
       参数:
          sockfd:套接字文件描述符
          addr:存放发送端IP地址空间首地址 
          addrlen:想要接收的IP地址的长度 
       返回值:
          成功返回新文件描述符
          失败返回-1 

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值