sockaddr结构体

struct  sockaddr{

  sa_family_t  sa_family; //地址族,最常用的是"AF_INET"(IPV4)和"AF_INET6"(IPV6); 

  char  sa_data[14];      //包含套接字中的目标地址和端口信息;

};

sockaddr的缺陷:sa_data把目标地址和端口信息混在一起了

sockaddr_in 结构体
sockaddr_in结构体解决了sockaddr的缺陷,把port和addr 分开储存在两个变量中

struct  sockaddr_in/  struct  sockaddr_in6结构体

struct  sockaddr_in{

  sa_family_t   sin_family;  //地址族,常用AF_INET

  uint16_t         sin_port;     //16位TCP/UDP端口号

  struct  in_addr  sin_addr;    //32位IP地址

  cha         sin_zero[8]   //不使用

};

struct  in_addr{

  in_addr_t    s_addr;      //32位IPV4地址

}

struct sockaddr_in6 {

   sa_family_t     sin6_family; /* AF_INET6 */

   in_port_t      sin6_port; /* port number */

   uint32_t       sin6_flowinfo; /* IPv6 flow information */

   struct in6_addr    sin6_addr; /* IPv6 address */

   uint32_t        sin6_scope_id; /* Scope ID (new in 2.4) */

};

struct in6_addr {

  unsigned  char s6_addr[16]; /* IPv6 address */

};

struct  sockaddr_in6相关详见 :http://man7.org/linux/man-pages/man7/ipv6.7.html

初始化和赋值:

IPV4

struct sockaddr_in ina;
bzero(&ina,sizeof(ina));
ina.sin_family=AF_INET;
ina.sin_port=htons(23);
ina.sin_addr.s_addr = inet_addr("132.241.5.10");

IPV4相关例子参考 http://www.cnblogs.com/huqian23456/archive/2011/02/22/1961822.html

IPV6

const   ipv6_addr = "::1";    //IPV6地址

struct   sockaddr saddr;
memset(&saddr, 0, sizeof(saddr));  /  /初始化结构体
saddr.sa_family = AF_INET6;
inet_pton(AF_INET6,ipv6_addr,saddr.sa_data);    //设置地址

struct sockaddr_in6 from_addr;
bzero(&from_addr,sizeof(from_addr));    //初始化结构体
from_addr.sin6_family = AF_INET6;   //设置地址家族
from_addr.sin6_port = htons(800);    //设置端口
inet_pton(AF_INET6,ipv6_addr,from_addr.sin6_addr.s6_addr );   //设置地址

inet_pton inet_ntop 地址转换相关详见 https://www.cnblogs.com/s7vens/archive/2011/12/12/2284964.html

最新文章

  1. 2016年8月ios面试问题总结
  2. 【51Nod 1244】莫比乌斯函数之和
  3. POJ 2823 Sliding Window 线段树区间求和问题
  4. .net线程池
  5. KnockoutJS 3.X API 第三章 计算监控属性(1) 使用计算监控属性
  6. UIlable 属性详用
  7. FTS抓包看蓝牙的SDP整个过程
  8. Java基本概念(未完)
  9. 【mysql5.6】数据类型
  10. mvc5 知识点01
  11. UVALive 6692 Lucky Number (思路 + 枚举)
  12. jquery改变多个css样式
  13. Gradient boosting
  14. Code First Entity Framework 6化被动为主动之explicit loading模式实战分析( 附源码)
  15. jQuery入门学习贴
  16. 多说评论一次导回 Typecho 本地数据库
  17. C#应用NPOI实现导出EXcel表格中插入饼状图(可实现动态数据生成)
  18. C# 多线程锁之ReaderWriterLockSlim
  19. Oracle11g温习-第十四章:约束( constraint )
  20. zookeeper 的心跳

热门文章

  1. i2c设备驱动之设备地址
  2. srping 事物管理
  3. vim的多窗口功能与环境参数设置
  4. Linux中断分层--软中断和tasklet
  5. django笔记-url
  6. PIE SDK波段运算
  7. MySQL数据库插入中文时出现Incorrect string value: '\xE6\x97\xB7\xE5\x85\xA8' for column 'sz_name' at row 1
  8. JS实现多少小时前,多少天前...
  9. C#中DataTable与泛型集合互转(支持泛型集合中对象包含枚举)
  10. tomcat和应用集成