执行到 inet_ntoa 时会产生段错误: Segmentation fault (core dumped) 【原因】 据说是在64位环境下会产生错误,而在32位系统下运行正常。 【解决办法】 加入头文件: #include <arpa/inet.h> 编译后执行正常。
警告的意思是,%s需要char *型的数据,而inet_ntoa返回的是int类型的,当我执行的时候出现了段错误!然后我man了一下,发现inet_ntoa函数在我的机器上面的返回值是int型的!这个时候需要加上#include <arpa/inet.h>,这样才能让返回值成为char *型的。当然还可以使用inet_ntop函数!
printf("IPv4 address : %s\n", inet_ntoa(dest.sin_addr)); return 0 } 相同的代码在redhat上的32位和64为机器上结果不一样。32为正常打印,64位却是段错误 在不同版本的gcc执行结果也不一样,gcc4.0版本以下的正常,4.1的有段错误。 但是同样是64位机器,connfd = accept(listenfd,(struct sockaddr *)&c...
执行到 inet_ntoa 时会产生段错误: Segmentation fault (core dumped) 【原因】 据说是在64位环境下会产生错误,而在32位系统下运行正常。 【解决办法】 加入头文件: #include <arpa/inet.h> 编译后执行正常。
警告的意思是,%s需要char *型的数据,而inet_ntoa返回的是int类型的,当我执行的时候出现了段错误!然后我man了一下,发现inet_ntoa函数在我的机器上面的返回值是int型的!这个时候需要加上#include <arpa/inet.h>,这样才能让返回值成为char *型的。当然还可以使用inet_ntop函数!
printf("IPv4 address : %sn", inet_ntoa(dest.sin_addr));return 0}相同的代码在redhat上的32位和64为机器上结果不一样。32为正常打印,64位却是段错误在不同版本的gcc执行结果也不一样,gcc4.0版本以下的正常,4.1的有段错误。但是同样是64位机器,connfd = accept(listenfd,(struct sockaddr *)&clientaddr...
乍一看,没什么问题啊,怎么会出现段错误呢? 捣腾了半天,才发现是缺少了inet_ntoa所在的头文件 arpa/inet.h,包含该头文件即可。好坑。 BTW,以后尽量少使用inet_ntoa,要多用inet_ntop代替它。 分类: 网络编程 好文要顶 关注我 收藏该文 微信分享 CobbLiu 粉丝- 210 关注- 0 +加关注 0 0 « 上一篇...
乍一看,没什么问题啊,怎么会出现段错误呢? 捣腾了半天,才发现是缺少了inet_ntoa所在的头文件 arpa/inet.h,包含该头文件即可。好坑。 BTW,以后尽量少使用inet_ntoa,要多用inet_ntop代替它。 CobbLiu(留候) 专注高性能、分布式存储 目前在一家云计算公司的分布式文件系统上研究和开发Bug. ...
发现也没有出现perror()的错误还有printf一直没有打印连接的端口号,连接成功理应由成功连接的地址端口显示出来。最后对函数inet_ntoa()查询是发现要加入<arpa/inet.h> 的头文件。哦NO,原来没有加入相应的头文件也会引起段错误。 加上就好了<arpa/inet.h>的头文件就好了 ...