1. 程式人生 > >linux IP地址轉換及網路位元組序

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);

將一個十進位制網路位元組序轉換為點分十進位制IP格式的字串。

3、inet_ntoa函式

#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"