Linux网络编程中的地址问题
在网络系统内核中 IP地址是32位,由4组十进制数组成,每组数值的范围为0~255,而平时我们使用的IP地址是16位字符串形式的IP地址,例如:“192.168.1.11”。在程序设计中经常要用到字符串表达方式的IP地址和二进制的IP地址之间的转换。
面对网络编程中众多的地址函数,你hold住了么,tiger哥没hold住,所以就写了此篇文章,希望大家能hold住网络编程。
前言:结构体struct in_addr
结构struct in_addr 在文件<netinet/in.h>中定义,结构in_addr 有一个unsigned long int 类型的成员变量s_addr。通常所说的IP地址的二进制形式就保存在成员变量s_addr中。
结构struct in_addr的原型如下:
structin_addr{
unsigned long int s_addr;/*IP地址*/
}
一.字符串IP地址转换为二进制形式的IP地址函数
1.inet系列函数的原型:
#include<sys/socket.h>
#include<netinet/in.h>
#include<apra/inet.h>
int inet_aton(const char *cp,struct in_addr *inp);
int addr_t inet_addr(const char *cp);
int addr_t inet_network(const char *cp);
char * inet_ntoa(struct in_addr in);
struct in_addr inet_makeaddr(int net,int host);
in_addr_t inet_lnaof(struct in_addr in);
in_addr_t inet_netof(struct in_addr in);
2.inet_aton()函数
int inet_aton(const char*cp,struct in_addr *inp)
1>函数作用:inet_ation()函数将在cp中存储的点分十进制字符串类型的IP地址,转换为二进制的IP地址,转换后的值保存在指针inp指向的结构struct in_addr中。
2>形参