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下,端口号的范围065535,同时01024范围的端口号已经被系统使用或保留
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
};