当前位置:  技术问答>linux和unix

sockaddr_in到底是怎么定义的 ?

    来源: 互联网  发布时间:2015-05-11

    本文导语:  有很多书上(包括Stevens的《Unix网络编程》)说是:   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];   };   但我觉得不正确! :)   我...


有很多书上(包括Stevens的《Unix网络编程》)说是:  
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];  
};  

但我觉得不正确! :)  
我去看了netinet/in.h等几个文件,根本没有sin_len字段!  
我写了个小程序,得知socket_in是16个字节,而除了sin_len外的4个字段加起来刚好是
16个字节(2+2+4+8=16)。  

我觉得这种才是对的:  
struct sockaddr_in {   
   short int sin_family; /* 地址族 */   
   unsigned short int sin_port; /* 端口号 */   
   struct in_addr sin_addr; /* IP地址 */   
   unsigned char sin_zero[8]; /* 填充0 以保持与struct sockaddr同样大小 */   


  };   


但是为什么连stevens的书中也是错的呢?? 请高手解释一下,谢谢了!  

|
这是为了和某些老协议实现的兼容性问题!
现在大部分地方已经不用了,

stevens 是针对整个unix讲的,没有针对某一个平台!

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • GCC不认识sockaddr_in,但认识sockaddr,哪位大侠指点一下是什么地方没有配置好
  • sockaddr_in结构体的问题
  • 客户端和服务器的连接函数中套接子地址结构为什么要从sockaddr_in转化成sockaddr
  • IPv4 套接字地址结构转换(char to struct sockaddr_in) 看不懂
  • linux中可以使用struct sockaddr_in吗?
  • sockaddr和sockaddr_in如何进行比较相等
  • 为什么sockaddr_in无法识别
  • struct sockaddr_in 的问题,我歇菜了


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3