Chinaunix

标题: recvfrom的奇怪问题 [打印本页]

作者: guotie    时间: 2009-04-18 11:00
标题: recvfrom的奇怪问题
各位兄弟,本人程序遇到奇怪的问题,描述如下:

OS:linux
函数:recvfrom

现象:当接收流量较少的情况下,该系统调用工作完全正常,在接受流量大的情况下,出现EFAULT错误。

经查,EFAULT错误是由于参数的问题引起的。

我的recvfrom调用如下:
recvfrom(rr_sock, (void *)buffer, sizeof(buffer), 0, (struct sockaddr *)&addr, (socklen_t *)&addr_len);

在出现EFAULT错误后,打印buffer,addr,addr_len的地址,发现addr,addr_len的地址确实改变了,问题是我的程序中,没有代码去改变这两个地址啊

注:该socket是在线程中创建的。


请教一下,是否有人遇到过类似的问题。

谢谢!
作者: xinglp    时间: 2009-04-18 22:17
帖前面的代码addr,addr_len声明初始化的那部分

[ 本帖最后由 xinglp 于 2009-4-19 20:43 编辑 ]
作者: JohnBull    时间: 2009-04-19 11:02
越界?
作者: guotie    时间: 2009-04-20 10:08
初始化肯定没有问题的,因为不是一开始就出现这样的问题。

越界是什么意思?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2