2 u010911350 u010911350 于 2014.12.17 20:46 提问

关于UBUNTU下C语言 段错误 转存储的问题

在Linux下雪C语言编程时,
1、捕捉文件操作错误并打印错误信息:strerror(errno)
2、用域名取得ip地址是打印IP是调用:inet_ntoa()时

总是出现段错误 ,该如何解决!

2个回答

u011767611
u011767611   2014.12.17 21:06

确认你定义了两个类似的结构体实例:

struct sockaddr_in client
socklen_t length;
length=sizeof(client);

然后在accept()函数里面这样传递参数(注意传递地址)

 accept(sockfd,(struct sockaddr*)&client,&length);

最后可以打印客户的ip和端口啦

printf("new conn[%s:%d][time:%ld],pos[%d]\n",
inet_ntoa(client.sin_addr),ntohs(client.sin_port),

希望能帮到你!

u010911350
u010911350 问题解决了 是版本的问题,相同的代码在redhat上的32位和64为机器上结果不一样。32为正常打印,64位却是段错误 在不同版本的gcc执行结果也不一样,gcc4.0版本以下的正常,4.1的有段错误。最后加上#include <arpa/inet.h> 完美解决,谢了哈!
3 年多之前 回复
u011767611
u011767611 printf里面的参数多了两个转义符,请注意删除。那是我的代码里面打印链接时间状态的!
3 年多之前 回复
wangyaninglm
wangyaninglm   Ds   Rxr 2014.12.19 20:59

学习了,看来现在系统版本什么的,得考虑到写程序里面了,但是这块的参考资料很少,只能读readme什么的原版东西了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!