IP地址转换函数inet

您所在的位置:网站首页 ip地址转换成十进制 IP地址转换函数inet

IP地址转换函数inet

2024-03-14 09:20| 来源: 网络整理| 查看: 265

函数原型1 : in_addr_t inet_addr(const char *cp); 函数原型1 :in_addr_t inet_addr(const char *cp); 参数  cp:传入的ip地址 demo:                 

int  ip_addr; ip_addr = inet_addr("192.168.2.125");   //设置ip点分十进制地址的地址 if(ip_addr==INADDR_NONE)               //  返回值错误判断    printf("ERROR"); printf("%d\n", ip_addr);              //打印转换后的网络字节序

函数原型2:int inet_aton(const char *cp, struct in_addr *inp); 参数  cp:传入的ip地址;inp   指向转换后存储到struct in_addr结构体的s_addr;

int ip_addr; struct in_addr inet_ip_addr; ip_addr = inet_aton("192.168.2.125", &inet_ip_addr); printf("%d\n",inet_ip_addr.s_addr);

 函数原型3: char *inet_ntoa(struct in_addr in);

struct in_addr network; network.s_addr=2097326272; //为s_addr赋值--网络字节序 printf("IP : %s\n", inet_ntoa(network));

函数原型4:  int inet_pton(int af, const char *src, void *dst);

af:地址簇,可选项:AF_INET(IPv4);AF_INET6(IPv6);    src:传入的IP地址

dst:将ip地址转换成网络字节序后的结果存储在dst指向的 struct in_addr 结构体中 s_addr 成员

int ret; struct in_addr var_ip; ret = inet_pton(AF_INET, "192.168.2.125", (void *)&var_ip); if(ret==0) printf("IP is not contained in address family\n"); if(ret == -1) printf("errno: EAFNOSUPPORT\n"); printf("%d\n",var_ip.s_addr); /*---------------- struct in_addr { uint32_t s_addr; // ip地址的网络字节序 }; 上述结构体为struct sockaddr_in 中的参数3 struct sockaddr_in { sa_family_t sin_family; // 地址簇 in_port_t sin_port; // 端口的网络字节序 struct in_addr sin_addr; // internet address }; -----------------*/

函数原型5  --> const char *inet_ntop(int af, const void *src,char *dst, socklen_t size);

af   同上;   src:传入的网络字节序;   dst:传出的IP地址;    size:IP地址长度

char ip_buff[INET_ADDRSTRLEN]={0}; struct in_addr net_ip; net_ip.s_addr = 2097326272; const char *ret; ret = inet_ntop(AF_INET, (const void *)&net_ip.s_addr, ip_buff, sizeof(ip_buff) ); if(ret==NULL){ // 对返回值进行错误判断 if(strcmp(ret,"EAFNOSUPPORT")) perror("AF error:"); if(strcmp(ret,"ENOSPC")) printf("address string over setted size"); } // 会报警告 printf("%s\n", ip_buff);

所用到的头文件如下:

#include #include #include #include #include #include

学习完写的小demo,不是很好,代码中写死IP和网络字节序是为了方便,写得不算好,毕竟才看完网络编程的视频,欢迎各位大佬指点,也欢迎各位像我一样的小白可以直接拿去用方便理解!

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3