linux IP地址轉換及網路位元組序
文獻參考:
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"