关于sockaddr和sockaddr_in的一点疑问,sin_zero[8]的这8个字节留来何用??

thor_lee 2009-08-09 02:26:08
sockaddr的结构是:
struct sockaddr {
  unsigned short sa_family; /* address family, AF_xxx ,2字节*/
  char sa_data[14]; /* 14 bytes of protocol address ,14字节*/
  };//共16字节

sockaddr_in的结构是:
struct sockaddr_in {
  short int sin_family; /* Address family ,2字节*/
  unsigned short int sin_port; /* Port number , 2字节*/
  struct in_addr sin_addr; /* Internet address ,4字节*/
  unsigned char sin_zero[8]; /* Same size as struct sockaddr ,8字节,*/
  };//共16字节

两者等价,但我们主要使用的是sockaddr_in,其中的sin_family,sin_port,sin_addr的意义很明显,唯独后面的8个空字节,留来何用???不解,特来请教~~~~高手们来讲讲~~~
...全文
570 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2011-11-08
  • 打赏
  • 举报
回复
这个是unix里的吧。
goofychan 2010-07-12
  • 打赏
  • 举报
回复
最近也在查这2个函数,云里雾里啊~
thor_lee 2009-08-09
  • 打赏
  • 举报
回复
看来又是个没有结果的问题……

不过好像跟微软没什么关系把,这个标准又不是微软定义的…………
MoXiaoRab 2009-08-09
  • 打赏
  • 举报
回复
这个问题我以前回答过,这个做保留用,一般没用到

微软的很多数据结构中都会放置一个或多个保留的域,没什么奇怪的。
也许是为了将来的革新兼容性做好放着先
雪影 2009-08-09
  • 打赏
  • 举报
回复
这个问题你的去问微软。
thor_lee 2009-08-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jennyvenus 的回复:]
别人都说用来保证两个结构体的size一致用的。

[/Quote]

这个我知道啊,我的意思是两个结构体都可以弄成8字节的形式,即

struct sockaddr {
  unsigned short sa_family; /* address family, AF_xxx ,2字节*/
  char sa_data[6]; /* 14 bytes of protocol address ,14字节*/
  };//共8字节

struct sockaddr_in {
  short int sin_family; /* Address family ,2字节*/
  unsigned short int sin_port; /* Port number , 2字节*/
  struct in_addr sin_addr; /* Internet address ,4字节*/
  };//共8字节

这样的话并没有影响到sin_family,sin_port,sin_addr的使用,干嘛非得多弄8个字节出来,这不是浪费嘛~~ 除非有别的什么作用!!!!
雪影 2009-08-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jennyvenus 的回复:]
别人都说用来保证两个结构体的size一致用的。

[/Quote]
up

查看msdn的说明就知道了
sin_zero
Padding to make structure the same size as SOCKADDR.
绿豆蛙2013 2009-08-09
  • 打赏
  • 举报
回复
http://blog.csdn.net/believe_me/archive/2006/06/12/790772.aspx
thor_lee 2009-08-09
  • 打赏
  • 举报
回复
是可以保证两个结构体是size一致,但是把两个结构体里面都减小8字节也是一致的啊,为什么非得用现在这种方法呢????
用户 昵称 2009-08-09
  • 打赏
  • 举报
回复
别人都说用来保证两个结构体的size一致用的。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧