linux网络编程之sockaddr_in和in_addr区别

举报
chenyu 发表于 2021/07/26 23:25:06 2021/07/26
【摘要】 1、struct  in_addr struct  in_addr就是32位IP地址。   struct in_addr { union { struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; struct { u_short s_w1,s_w2; } S_un_w; u_long S_addr...

1、struct  in_addr

struct  in_addr就是32位IP地址。  


  
  1. struct in_addr {
  2. union {
  3. struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
  4. struct { u_short s_w1,s_w2; } S_un_w;
  5. u_long S_addr;
  6. } S_un;
  7. #define s_addr S_un.S_addr
  8. };

 

 

2、sockaddr_in


  
  1. struct sockaddr_in {
  2. short int sin_family;
  3. unsigned short int sin_port;
  4. struct in_addr sin_addr;
  5. unsigned char sin_zero[8];
  6. };

 

sockaddr_in 结构体里面包含结构体in_addr,这是他们的关系

 

 inet_addr()是将一个点分制的IP地址(如192.168.0.1)转换为上述结构中需要的32位IP地址(0xC0A80001)

一般用法

 


  
  1. struct sockaddr_in sockaddr;
  2. sockaddr.sin_family = AF_INET;
  3. sockaddr.sin_port = htons(MYPORT);
  4. sockaddr.sin_addr.s_addr = inet_addr("192.168.0.1");

 

 

 

 

 

 

文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。

原文链接:chenyu.blog.csdn.net/article/details/60969105

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。