网络编程 sockaddr sockaddr_in in_addr 的关系

// sockaddr常用于bind、connect、recvfrom、sendto等函数的参数,指明地址信息,是一种通用的套接字地址。 
// sockaddr_in 是internet环境下套接字的地址形式。所以在网络编程中我们会对sockaddr_in结构体进行操作,
// 使用sockaddr_in来建立所需的信息,最后使用类型转化就可以了。一般先把sockaddr_in变量赋值后,
// 强制类型转换后传入用sockaddr做参数的函数:sockaddr_in用于socket定义和赋值;sockaddr用于函数参数。


// struct sockaddr(套接字的普通C定义通用的地址结构)
// 一共 16 个字节
struct sockaddr {  
  sa_family_t sin_family; // 地址(协议)族(socket internet family) 2字节 socket网络编程一般值为 AF_INET
 char sa_data[14]; // 14字节,包含套接字中的目标地址和端口信息               
};

//struct sockaddr_in(IP专用的地址结构)
// 一共 16 个字节,为了解决 sockaddr 结构体将端口号和ip地址混在一起的问题
struct sockaddr_in {
  sa_family_t sin_family;// 地址(协议)族(socket internet family) 2字节 socket网络编程一般值为 AF_INET
  uint16_t sin_port;// 16位 TCP/UDP 端口号 2字节
  struct in_addr sin_addr;// 32位 ipv4 地址  4字节
  char   sin_zero[8];// 空白数据,不使用
};

// struct in_addr
struct in_addr {
  in_addr_t s_addr;  // 32位 ipv4 地址 4字节
};

//TODO

socket接口与socket对象具体解析: https://blog.youkuaiyun.com/liuxingen/article/details/44995467

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值