unix ip 地址值

来源:互联网 发布:淘宝团队规模 编辑:程序博客网 时间:2024/05/25 16:40

这篇文章记录unix中ip地址的相关操作。此次总结后,希望能避免每次用到都要临时去查找的烦恼。
1、相关数据结构  
1.1 struct sockaddr 
struct sockaddr {
unsigned short sa_family;
char sa_data[14]
};
sockaddr 是通用地址结构,一般用 sockaddr_in 来解析,也就是解析sa_data的含义。

1.2 struct sockaddr_in 
struct sockaddr_in {
short int sin_family;
unsigned short int sin_port;
struct in_addr sin_addr;
unsigned char sin_zero[8]
}
sockaddr_in结构是sock_addr 的具体解析。将 sockaddr 中的sa_data.解析成两部分。
分别是6个字节和8个字节。前6个字节又分为 sin_port、struct in_addr

1.3 struct in_addr
struct in_addr {
unsigned long s_addr;
};

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为长整形结构
} S_un;
};
struct in_addr 用于记录4字节的ip.

2、地址转换函数

2.1 点分十进制转二进制
int inet_aton(const char *cp, struct in_addr *inp);

2.2 二进制转点分十进制
char *inet_ntoa(struct in_addr in);

原创粉丝点击