IP地址转换函数(IP地址和网络字节序 相互转换)
环境: linux gcc
三个函数 (适合IPV4)
#include<arpa/inet.h>
in_addr_t inet_addr(const char * strptr); //将 IP 转换成 网络字节序
int inet_aton(const char * strptr,struct in_addr *inp); //将 IP 转换成 网络字节序存入inp中,返回int为1成功,返回为0,则失败
char* inet_ntoa(struct in_addr in); //将网络字节序 转换成 IP地址 (注意该函数不可重入)
#include<stdio.h>
#include<arpa/inet.h> //ip地址转换为 字节序
int main(int argc, char const *argv[])
{
const char *ipString = "192.168.1.168";
//使用inet_addr 将ip地址转换成 网络字节序
in_addr_t networkResult = inet_addr(ipString);
if(networkResult == INADDR_NONE){
printf("error");
}else{
printf("转success to %#x \n",networkResult);
}
//inet_aton函数 将ip地址转换成 网络字节序
printf("开始将使用 inet_aton函数\n");
struct in_addr * inp;
int atonResult;
atonResult = inet_aton(ipString,inp);
if(atonResult ==1){
printf("inet_aton success \n");
printf(" in_addr_t : %#x \n",inp->s_addr);
}else{
printf("inet_aton error \n");
}
//inet_ntoa 函数 将网络字节序 转换成 ip地址
printf("将网络字节序 转换 成地址\n");
char* inet_ntoaAddr = inet_ntoa(*inp);
printf("网络字节序 转换 成 IPV4地址%s\n",inet_ntoaAddr);
return 0;
}
编译run
两个转换函数(适合IPV4 和 IPV6)
#include<arpa/inet.h>
int inet_pton(int af,const char *src,void *dst); //参数(协议,地址字符串,结果存储dst指向的内存)。
const char *inet_ntop(int af,const char *src,const char *dst ,socklen_t cnt); //最后一个参数是指目标内存大小。
版权声明:本文为appearAndLeave原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。