使用inet_ntop替换inet_ntoa进行网络地址到字符地址转换
来源:互联网 发布:vr软件看不了 编辑:程序博客网 时间:2024/05/29 19:25
问题背景:
我在提取网络层数据时需要进行IP地址到点十分地址的时候使用inet_ntoa函数进行输出转换,但是我在同一个输出里面调用inet_ntoa分别对源IP和目的IP进行转换时输出的结果是一样的。我保证了我的源IP和目的IP是不同的,结果却让我很诧异
printf("%s,%s",inet_ntoa(addr[0]),inet_ntoa(addr[1])); //输出结果 192.168.17.2, 192.168.17.2后来查找资料发现,inet_ntoa的结果是保存在静态内存当中的,上面的输出代码返回的是同一个栈的数据,后面一个inet_ntoa会将前一个的数据进行覆盖导致数据错误。
解决方案:
1.将inet_ntoa的数据复制出来保存使用
2.使用inet_ntop函数指定参数进行转换
#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt);样例(来源百度百科):
#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);}
阅读全文
0 0
- 使用inet_ntop替换inet_ntoa进行网络地址到字符地址转换
- 地址转换函数inet_aton、 inet_ntoa、 inet_addr和inet_pton 、inet_ntop
- IP地址转换函数——inet_ntop(),inet_pton(),inet_addr(),inet_aton(),inet_ntoa()
- VS inet_ntoa,inet_addr不能使用,inet_ntop,inet_pton
- 网络字节转换inet_aton & inet_ntoa & inet_addr和inet_pton & inet_ntop
- 网络字节转换inet_aton & inet_ntoa & inet_addr和inet_pton & inet_ntop
- 网络字节转换inet_aton & inet_ntoa & inet_addr和inet_pton & inet_ntop
- 网络字节转换inet_aton & inet_ntoa & inet_addr和inet_pton & inet_ntop
- 网络字节转换inet_aton & inet_ntoa & inet_addr和inet_pton & inet_ntop
- 网络字节转换inet_aton & inet_ntoa & inet_addr和inet_pton & inet_ntop
- 网络字节转换inet_aton & inet_ntoa & inet_addr和inet_pton & inet_ntop
- 网络字节转换inet_aton & inet_ntoa & inet_addr和inet_pton & inet_ntop
- 网络字节转换inet_aton & inet_ntoa & inet_addr和inet_pton & inet_ntop
- IP地址转换函数--inet_addr和inet_ntoa使用笔记
- inet_addr() inet_ntoa() inet_pton inet_ntop sockaddr_in
- 网络字节转换inet_aton & inet_ntoa & inet_addr和inet_pton & inet_ntop
- IP 地址转换 inet_addr() inet_ntoa() 笔记
- Unix网络编程卷一: 网络地址转换函数 (inet_pton和inet_ntop)
- 09-Thrift高级3
- scala开发环境搭建(scala学习一)
- DllMain和多线程死锁
- JfreeChart相关开发:柱形图,饼图,折线图
- C语言笔记——(i++)和(++i)的区别
- 使用inet_ntop替换inet_ntoa进行网络地址到字符地址转换
- Java多线程基础——线程和线程安全
- 如何克服拖延症
- 随机排列出场顺序
- hdu5052 Yaoge’s maximum profit (树链剖分)
- HDU-2665 Kth number
- springBoot整合JdbcTemplate
- JAVA发展的概述
- OKHttp介绍