struct sockaddr_in 和 struct sockaddr
来源:互联网 发布:只有域名怎么绑定微博 编辑:程序博客网 时间:2024/05/16 14:28
以前觉得既然struct sockaddr_in 和 struct sockaddr和是差不多的,为什么会有这两个结构体呢?有一个不就好了吗?今天看到一个例子,了解到,struct sockaddr“更为通用”的意义所在。
struct sockaddr的定义是:
struct sockaddr { unsigned short sa_family; // address family, AF_xxx char sa_data[14]; // 14 bytes of protocol address};
struct sockaddr_in的定义是:
struct sockaddr_in { uint8_t sin_len; sa_family_t sin_family; in_port_t sin_port; struct in_addr sin_addr; char sin_zero[8];};
可见struct sockaddr相比之下就显得非常含糊了。就一个地址协议族,一个14字节的空间。但就是这样,给它很大的空间,可以装下很多想要的东西。见如下代码段(代码来自这里,未运行过):
if (ifr.ifr_hwaddr.sa_family!=ARPHRD_ETHER) { die("not an Ethernet interface");}
const unsigned char* mac=(unsigned char*)ifr.ifr_hwaddr.sa_data;printf("%02X:%02X:%02X:%02X:%02X:%02X\n", mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]);上面的代码中,ifr.ifr_hwaddr的类型正是struct sockaddr的,而其成员sa_data里的数据直接被填入了mac地址,可以直接来用的。这说明,struct sockaddr作为一个存储地址的结构体,是多用的,它和相对专用的struct sockaddr_in功能上并不是重复的。
0 0
- struct sockaddr_in 和 struct sockaddr
- struct sockaddr和struct sockaddr_in
- struct sockaddr_in和struct sockaddr区别
- struct sockaddr_in和struct sockaddr区别
- struct sockaddr_in和struct sockaddr区别
- struct sockaddr和struct sockaddr_in结构
- struct sockaddr和struct sockaddr_in和struct in_addr
- struct sockaddr 与 struct sockaddr_in
- struct sockaddr 与 struct sockaddr_in
- struct sockaddr 与 struct sockaddr_in
- struct sockaddr 与 struct sockaddr_in
- struct sockaddr与struct sockaddr_in
- struct sockaddr、sockaddr_in
- struct sockaddr 和 sockaddr_in 的区别
- struct sockaddr_in, struct sockaddr,struct in_addr
- struct sockaddr ,struct sockaddr_in,struct in_addr
- struct sockaddr,struct sockaddr_in, struct in_addr
- struct sockaddr_in和struct sockaddr有什么区别
- 代码分享站点
- POJ 2912 Rochambeau(路径压缩并查集)
- 错误:undefined reference to `__gxx_personality_v0' .
- Static块什么时候运行
- 进程入门之使用文件映射
- struct sockaddr_in 和 struct sockaddr
- 第一章:检索记录 20140314
- 一、spring mvc的获取参数和传递参数
- SQL调整数据的外观
- Maven内置隐式变量
- java基础之 -------->> JDK
- 深入理解java异常处理机制
- 第二周作业
- yii分页组件的使用