C++中inet_pton、inet_ntop函数的用法
作者:Lei Gong
这篇文章主要介绍了C++中inet_pton、inet_ntop函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
C++中inet_pton、inet_ntop函数
头文件
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]; //存放点分十进制IP地址 struct in_addr s; // IPv4地址结构体 // 输入IP地址 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); }
inet_pton和inet_ntop使用总结
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int main (void) { char IPdotdec[20]; //存放点分十进制IP地址 struct in_addr s; // IPv4地址结构体 // 输入IP地址 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); return 0; }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。