文献参考:
http://roclinux.cn/?p=1160
一、IP地址的表示法:
1、ASCII表示法:
210.25.132.181,也就是字符串形式,英语叫做IPv4 numbers-and-dots notation。
2、整型表示法:
3524887733,整数形式的IP地址,。英语叫做binary data。
二、IP地址的转换:
IPv4 :
1、inet_addr函数
#include <arpa/inet.h>
in_addr_t inet_addr(const char* strptr);
将字符串转换为32位二进制网络字节序的IPV4地址,即将一个点间隔地址转换成一个in_addr。
2、inet_ntoa函数
#include <arpa/inet.h>
char* inet_ntoa(struct in_addr in);
3、 inet_ntoa函数将一个十进制网络字节序转换为点分十进制IP格式的字符串。
#include <arpa/inet.h>
int inet_aton(const char *string, struct in_addr *addr);
是一个改进的方法来将一个字符串IP地址转换为一个32位的网络序列IP地址。
IPv6 :
1、inet_pton函数
2、inet_ntop函数
程序示例:
#Include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
strcut sockaddr_in src;
src.sin_addr.s_addr = inet_addr("*.*.*.*"); //构建网络地址。
printf("%s\n",inet_ntoa(src.sin_addr)); //将网络地址转换成字符串。
三、本机字节顺序与网络字节顺序的转换
#include <arpa/inet.h>
htons ------"host to network short"
htonl -------"host to network long"
ntohs -------"network to host short"
ntohl -------"network to host long"