socket创建流程及代码示例

本文深入剖析Linux内核源代码,详细解释socket创建流程,并提供相关代码示例,涵盖从基本概念到实际应用,包括SPI总线配置、内核启动分析、U-Boot流程、自动化运维工具以及Linux服务端口管理等关键知识点。
摘要由CSDN通过智能技术生成
socket操作
1.1 创建socket
int socket(int domain, int type, int protocol);
    domain: 确定通信的特性
                AF_INET          IPv4因特网域
                AF_INET6        IPv6因特网域
                AF_UNIX         UNIX域
                AF_UNSPEC    未指定
            type: 指定套接字的类型
                SOCK_DGRAM        长度固定的、无连接的不可靠报文传递
                SOCK_RAW              IP协议的数据报接口(POSIX.1中可选)
                SOCK_SEQPACKET  长度固定、有序、可靠的面向连接报文传递
                SOCK_STREAM        有序、可靠、双向的面向连接字节流
            protocol参数通常是0,表示按给定的域和套接字类型选择默认协议。当同一域和套接字类型支持多个协议的时候,可以使用protocol参数选择一个特定的协议。
                AF_INET通信域中套接字类型SOCK_STREAM的默认协议是TCP(传输控制协议)
                AF_INET通信与中套接字类型SOCK_DGRAM的默认协议是UDP(用户数据报协议)
1.2 绑定地址(server)
        int bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen);
            sockfd: 要绑定的套接字
            my_addr: 地址结构体
            addrlen: 结构体长度,通常为sizeof(my_addr)
        1.2.1 struct sockaddr
            该结构体定义了地址信息
            struct sockaddr_in {
                sa_family_t sin_family;
                in_port_t sin_port;
                struct in_addr sin_addr;
            };
        1.2.2 网络字节转换
            网络中的数据格式为大端,所以需要将小端存储的数据转换成为大端存储,一下为网络字节序和本地字节序(小端)之间转换函数
            uint32_t htonl(uint32_t hostint32);       /// host to net long(uint32_t)
            uint16_t htons(uint16_t hostint16);      /// host to net short(uint16_t)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值