关于sockaddr_in,问一个很基础的问题!
以下是sockaddr_in中in_addr 的定义:
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;
};
我有些不明白,为什么要在
union{
....
}S_un
的外面包裹一层struct in_addr 的定义,为什么不将in_addr直接定义为union,如:
union in_addr{
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;
};
则使用的时候:
sockaddr_in sin;
sin.sin_addr.S_addr=INADDR_ANY;
而不是:
sin.sin_addr.S_un.S_addr=INADDR_ANY;
这样不是更简单一些吗?