C++ sockaddr_in详解

    struct   sockaddr   {  
                unsigned   short   sa_family;     
                char   sa_data[14];     

        };  

sa_family是地址家族,一般都是“AF_xxx”的形式。通常大多用的是都是AF_INET,代表地址组

sa_data是14字节协议地址

sockaddr 是通用的socket地址,具体到Internet   socket,用下面的结构,二者可以进行类型转换  

  struct   sockaddr_in   {  
                short   int   sin_family;     // Address family 一般来说 AF_INET(地址族)PF_INET(协议族 )
                unsigned   short   int   sin_port;  //sin_port存储端口号(使用网络字节顺序),在linux下,端口号的范围0~65535,同时0~1024范围的端口号已经被系统使用或保留
                struct   in_addr   sin_addr;     //存储IP地址
                unsigned   char   sin_zero[8];  //sin_zero是为了让sockaddr与sockaddr_in两个数据结构保持大小相同而保留的空字节   
        };  
        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; //s_addr按照网络字节顺序存储IP地址
                } S_un;

                #define s_addr  S_un.S_addr
        };  

你可能感兴趣的:(sockaddr_in,sockaddr)