嵌入式经验总结——TCP传输控制协议

本文详细介绍了TCP传输控制协议的使用,包括创建套接字、绑定、监听、接受连接、接收和发送数据以及连接服务器的过程。通过示例代码展示了服务器端和客户端的实现,涉及关键函数如socket、bind、listen、accept、recv、send和connect等。
摘要由CSDN通过智能技术生成

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义。

创建套接字:socket ( )

       #include <sys/types.h>          
       #include <sys/socket.h>

       int socket(int domain, int type, int protocol);
            domain:  域,范围,区域
                AF_UNIX,: linux进程内部通信
                AF_INET ,用于ipv4通信
                AF_INET6,用于ipv6通信
            type:
                SOCK_STREAM, TCP专属,提供面向连接 字节流 安全可靠服务
                SOCK_DGRAM,   UDP专属
                SOCK_RAW ,    自己实现一套接口
            protocol: 为0即可
            
            返回值:
               成功: 正数--新的连接socket
               失败:-1,errno

绑定套接字:bind ( )

       #include <sys/types.h>          
       #include <sys/socket.h>

       int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
        addr:应该包含ip和端口号
            我们没有使用这个类型:
                struct sockaddr {
                   sa_family_t sa_family;
                   char  sa_data[14];
               }

           我们使用的是下面的类型:
               struct sockaddr_in {        man  7 ip
                   sa_family_t    sin_family;     永远等于AF_INET.   address family: AF_INET 
                   in_port_t      sin_port;     端口号以大端方式存放的   port in network byte order 
                   struct in_addr sin_addr;     internet address  
               };

               Internet address.  
               struct in_addr {
                   uint32_t       s_addr;      IP地址,以大端方式存放   address in network byte order  
               };
            
            addrlen: addr结构体长度
            返回值:
                成功:0 
                失败:-1,errno

注:int inet_addr(char *ip)负责将字符串表示的 点分法,转换为 u32,以大端方式存放

启动监听:listen ( )

       #include <sys/types.h>          
       #include <sys/socket.h>

       int listen(int sockfd, int backlog);
            backlog:  主socket在一瞬间可以同时处理的客户端个数
                    一般选5,表示可以同时处理2*5+1
            返回:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值