- 头文件
windows下:
#include <WS2tcpip.h>
linux下:
#include <sys/socket.h>
#include <netinet/in.h>
#include<arpa/inet.h> - inet_pton函数
将点分十进制串转换成网络字节序二进制值,此函数对IPv4地址和IPv6地址都能处理。
第一个参数可以是AF_INET或AF_INET6:
第二个参数是一个指向点分十进制串的指针:
第三个参数是一个指向转换后的网络字节序的二进制值的指针。 - inet_ntop函数
和inet_pton函数正好相反,inet_ntop函数是将网络字节序二进制值转换成点分十进制串。
第一个参数可以是AF_INET或AF_INET6:
第二个参数是一个指向网络字节序的二进制值的指针;
第三个参数是一个指向转换后的点分十进制串的指针;
第四个参数是目标的大小,以免函数溢出其调用者的缓冲区。 - 样例
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main (void)
{
char IPdotdec[20];
struct in_addr s;
printf("Please input IP address: ");
scanf("%s", IPdotdec);
inet_pton(AF_INET, IPdotdec, (void *)&s);
printf("inet_pton: 0x%x\n", s.s_addr);
inet_ntop(AF_INET, (void *)&s, IPdotdec, 16);
printf("inet_ntop: %s\n", IPdotdec);
}