linux c socket ip地址 字符串 数字 转换 inet |
您所在的位置:网站首页 › ip地址转化为整数函数 › linux c socket ip地址 字符串 数字 转换 inet |
目录 0、转换函数 1、介绍inet_addr函数 2、介绍inet_ntoa函数 3、一般使用总结 inet_addr 将字符串形式的IP地址 -> 网络字节顺序 的整型值 inet_ntoa 网络字节顺序的整型值 ->字符串形式的IP地址 inet_pton ip字符串 -> ip数字 inet_ntop ip数字 -> ip字符串 详见 《linux c 通过套接字获取本地远程地址信息 getsockname getpeername 简介》https://blog.csdn.net/whatday/article/details/39963865 0、转换函数 // ip字符串 转 数字 int ip_str_to_value(char *ip) { struct in_addr s; inet_pton(AF_INET, ip, (void *) &s); return s.s_addr; } // ip数字 转 字符串 void ip_value_to_str(int ip, char *result, int size) { inet_ntop(AF_INET, (void *) &ip, result, size); } 1、介绍inet_addr函数inet_addr函数转换网络主机地址(如192.168.1.10)为网络字节序二进制值,如果参数char *cp无效,函数返回-1(INADDR_NONE),这个函数在处理地址为255.255.255.255时也返回-1,255.255.255.255是一个有效的地址,不过inet_addr无法处理 in_addr_t inet_addr(const char *cp) 2、介绍inet_ntoa函数inet_ntoa 函数转换网络字节排序的地址为标准的ASCII以点分开的地址,,该函数返回指向点分开的字符串地址的指针,该字符串的空间为静态分配的,这意味着在第二次调用该函数时,上一次调用将会被重写(复盖) char *inet_ntoa(struct in_addr in) 3、一般使用总结 #include #include #include struct sockaddr_in add; add.sin_addr.s_addr = inet_addr("*.*.*.*"); //构建网络地址。 printf("ip is %s\n",inet_ntoa(add.sin_addr));测试inet_ntoa函数返回值是不是静态 char *add1,add2; src.sin_addr.s_addr = inet_addr("192.168.1.123"); add1 =inet_ntoa(src.sin_addr); src.sin_addr.s_addr = inet_addr("192.168.1.124"); add2 = inet_ntoa(src.sin_addr); printf("a1:%s\n",add1); 显示为:: a1:192.168.1.124 printf("a2:%s\n",add2); 显示为: a2:192.168.1.124 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |