linux c socket ip地址 字符串 数字 转换 inet

您所在的位置:网站首页 ip地址转化为整数函数 linux c socket ip地址 字符串 数字 转换 inet

linux c socket ip地址 字符串 数字 转换 inet

2024-06-10 14:17| 来源: 网络整理| 查看: 265

目录

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