1. 函数功能
inet_addr
将点分十进制格式的IP地址(字符串)转化为网络字节顺序IP地址(u_long类型)。
inet_aton
将网络字节顺序的IP地址(in_addr类型)转化为点分十进制格式的IP地址(字符串)。
inet_ntoa
将点分十进制格式的IP地址(字符串)转化为网络字节顺序IP地址(in_addr类型)。
2. in_addr和u_long的关系
in_addr的定义如下:
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, *PIN_ADDR, FAR *LPIN_ADDR;
共用体union内可以定义多个不同类型的数据成员,但是各个数据成员共享同一段内存。uinion可以看作是一种泛型的数据类型,其真实类型取决于当前被赋值的成员的类型。由此可见,in_addr和u_long是“平级”的,利用u_long类型变量可以“特化”in_addr类型变量。