zoukankan      html  css  js  c++  java
  • sockaddr结构体

    sockaddr

    本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!
    一,用于存储参与(IP)Windows套接字通信的计算机上的一个internet协议(IP)地址。为了统一地址结构的表示方法 ,统一接口函数,使得不同的地址结构可以被bind()、connect()、recvfrom()、sendto()等函数调用。但一般的编程中并不直接对此数据结构进行操作,而使用另一个与之等价的数据结构sockaddr_in。这是由于Microsoft TCP/IP套接字开发人员的工具箱仅支持internet地址字段,而实际填充字段的每一部分则遵循sockaddr_in数据结构,两者大小都是16字节,所以二者之间可以进行切换。
    外文名
    sockaddr
    性    质
    通用地址结构
    定    义
    struct sockaddr {
    说    明
    sa_data : 是14字节的协议地址

    目录

    1sockaddr

    2sockaddr_in

     
     
    1sockaddr
    其定义如下:
    struct sockaddr {
      unsigned short sa_family; /* address family, AF_xxx */
      char sa_data[14]; /* 14 bytes of protocol address */
      };
    说明:
    sa_family :是2字节的地址家族,一般都是“AF_xxx”的形式。通常用的都是AF_INET。
    2sockaddr_in
    其定义如下:[1] 
    struct sockaddr_in {
      short int sin_family; /* Address family */
      unsigned short int sin_port; /* Port number */
      struct in_addr sin_addr; /* Internet address */
      unsigned char sin_zero[8]; /* Same size as struct sockaddr */
      };
      sin_family:指代协议族,在socket编程中只能是AF_INET
      sin_port:存储端口号(使用网络字节顺序)
      sin_addr:存储IP地址,使用in_addr这个数据结构
      sin_zero:是为了让sockaddr与sockaddr_in两个数据结构保持大小相同而保留的空字节。
    而其中in_addr结构的定义如下:
    typedef struct in_addr {
      union {
      struct{ unsigned char s_b1,s_b2, s_b3,s_b4;} S_un_b;
      struct{ unsigned short s_w1, s_w2;} S_un_w;
      unsigned long S_addr;
      } S_un;
      } IN_ADDR;
    阐述下in_addr的含义,很显然它是一个存储ip地址的共用体有三种表达方式:
    第一种用四个字节来表示IP地址的四个数字;
    第二种用两个双字节来表示IP地址;
    第三种用一个长整型来表示IP地址。
    给in_addr赋值的一种最简单方法是使用inet_addr函数,它可以把一个代表IP地址的字符串赋值转换为in_addr类型,如addrto.sin_addr.s_addr=inet_addr("192.168.0.2");
    其反函数是inet_ntoa,可以把一个in_addr类型转换为一个字符串。
  • 相关阅读:
    js中的数组
    range关键字,map,sync.Map,list
    数组,切片
    类型转换,指针,变量的生命周期,常量,模拟枚举,类型别名和类型定义
    字符串类型及其常用操作
    整数类型,浮点类型,复数,bool类型
    声明,初始化,匿名变量,作用域
    C#并发编程——异步编程基础
    继承、多态、接口
    C#基础
  • 原文地址:https://www.cnblogs.com/xunbu7/p/4369935.html
Copyright © 2011-2022 走看看