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>形参