Linux C 套接字地址结构

IPv4 套接字地址结构

IPv4套接字地址结构也称为网络套接字地址结构,以sockaddr_in 命名,定义在<netinet/in.h>头文件中

struct in_addr

{

    in_addr_t s_addr; /*32位IPv4 地址*/

};

struct sockaddr_in

{

    uint8_t               sin_len;    /*地址结构的长度*/

    sa_family_t      sin_family;    /*AF_INET*/

    in_port_t           sin_port;     /*16 位TCP 或UDP 端口号*/

    struct in_addr   sin_addr;   /*32位IPv4 地址,网络字节序*/

    char                   sin_zero[8];    /*未使用*/

};

通用套接字地址结构

定义在<sys/socket.h>头文件中

struct sockaddr

{
    uint8_t             sa_len;

    sa_family_t     sa_family;   /*地址族:AF_XXX */

    char                  sa_data[14];    /*特定协议地址*/

};


套接字函数定义为以指向某个通用套接字地址结构的一个指针作为其参数之一,比如:

struct sockaddr serv;

bind(sockfd, (struct sockaddr *)&serv,sizeof(serv));

IPv6套接字地址结构

IPv6套接字地址结构定义在<netinet/in.h>中,

struct in6_addr

{

    uint8_t    s6_addr[16];          /*128位IPv6地址结构,网络字节序*/

};

struct sockaddr_in6

{

    uint8_t                    sin6_len;                /*地址结构的长度*/

    sa_family_t            sin6_family;          /*AP_INET6*/

    in_port_t                 sin6_port;             /*传输层端口*/

    uintt                         sin6_flowinfo;      /*流标信息*/

    struct  in6_addr     sin6_addr;           /*IPv6 地址*/

    uint32_t                  sin6_scope_id;     /*标识具备范围的地址*/ 

};


新的通用套接字地址结构

定义在<netinet/in.h>头文件中

struct sockaddr_storage

{

    uint8_t          sa_len;

    sa_family_t  ss_family;

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值