ip4和ip6的sockaddr_in 结构解释
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
struct sockaddr_in6 {
short sin6_family;
u_short sin6_port;
u_long sin6_flowinfo;
struct in6_addr sin6_addr;
u_long sin6_scope_id;
};
struct sockaddr_in6_old {
short sin6_family;
u_short sin6_port;
u_long sin6_flowinfo;
struct in6_addr sin6_addr;
};
sin_family字段必须设为AF_INET,以告知sock我们此时正在使用IP地址家族
SOCKADDR_IN结构的sin_addr字段用于把一个IP地址保存为一个4字节的数,它是无符
号长整数类型。根据这个字段的不同用法,还可表示一个本地或远程IP地址。IP地址一般是
用“互联网标准点分表示法”(像a.b.c.d一样)指定的,每个字母代表一个字节数,从左到右
分配一个4字节的无符号长整数。最后一个字段sin_zero,只充当填充项的职责,以使
SOCKADDR_IN结构和SOCKADDR结构的长度一样。
The in_addr structure represents a host by its Internet address.
typedef 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_un;
} in_addr;
Members
S_un
S_un_b Address of the host formatted as four u_chars.
S_un_w Address of the host formatted as two u_shorts.
S_addr Address of the host formatted as a u_long.
—–
