sockaddr和sockaddr_in

8 篇文章 0 订阅
sockaddr
struct sockaddr为通用的套接口地址结构,在头文件<sys/socket.h>中定义,结构定义如下:
struct sockaddr { 

         uint8_t          sa_len;                 

         sa_family_t   sa_family;      /*address family; AF_XXX value*/                 

         char             sa_data[14];  /*protocol-specific address*/                

};
sockaddr_in
struct sockaddr为IPv4套接口地址结构,在头文件<netinet/in.h>中定义,结构定义如下:
struct sockaddr_in{

          uint8_t        sin_len;                        /*length of structure(16)*/

          sa_family_t sin_family;                     /*AF_INET*/

          in_port_t     sin_port;                       /*16-bit TCP or UDP port number, network byte ordered*/

          struct in_addr sin_addr;                  /*32-bit IPv4 address, network byte ordered*/

          char           sin_zero[8];                   /*unused*/

};
使用通用的套接口地址结构的原因是:从应用程序开发人员角度来看,是给指向特定于协议的地址结构的指针转换类型;
而从内核的角度来看,内核必须依据调用者的指针,转换为struct sockaddr*,然后坚持sa_family的值确定结构的类型。
其中成员sin_zero暂时没有使用到,用来扩充功能,一般在使用时将其初始化为0,事实上,Posix.1g只需要这个结构中的三个成员sin_family、sin_port和sin_addr,加入其他的两项完全是为了兼容性考虑的。
 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值