setsockopt总是出现Numerical argument out of domain

lemoner2003 2010-09-06 01:21:03


代码:
int nNetTimeout = 5; //5秒
//接收时限
if(setsockopt(sk_recv,SOL_SOCKET,SO_RCVTIMEO,(const char *)&nNetTimeout,sizeof(tv)) != 0)
fprintf(stdout,"set socket %s\n",strerror(errno));

运行时总是出现Numerical argument out of domain,谁遇到过类似问题啊,帮解决一下!
...全文
1124 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mymtom 2010-09-06
  • 打赏
  • 举报
回复
SO_RCVTIMEO需要struct timeval结构

struct timeval timeout;
timeout.tv_sec = 5;
timeout.tv_usec = 0;
if(setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout)) != 0)
fprintf(stdout,"setsockopt [%d][%s]\n", errno, strerror(errno));
arong1234 2010-09-06
  • 打赏
  • 举报
回复
SOL_SOCKET类别得根本没有这种option,在Windows系统中它也根本没实现过
lemoner2003 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hairetz 的回复:]

setsockopt(socket,SOL_S0CKET,SO_RCVTIMEO,(char *)&nNetTimeout,sizeof(int));

如果你想设置接收时的超时,这样即可
[/Quote]

invalid argument
  • 打赏
  • 举报
回复
setsockopt(socket,SOL_S0CKET,SO_RCVTIMEO,(char *)&nNetTimeout,sizeof(int));

如果你想设置接收时的超时,这样即可
arong1234 2010-09-06
  • 打赏
  • 举报
回复
既然你传进去的缓冲区是int的,你为什么告诉setsockopt的尺寸是timeval结构的尺寸?很显然不匹配么[Quote=引用 2 楼 lemoner2003 的回复:]
引用 1 楼 justkk 的回复:

sizeof(tv) tv是什么东东?


不好意思,忘记写了:struct timeval tv;
[/Quote]
lemoner2003 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 justkk 的回复:]

sizeof(tv) tv是什么东东?
[/Quote]

不好意思,忘记写了:struct timeval tv;
justkk 2010-09-06
  • 打赏
  • 举报
回复
sizeof(tv) tv是什么东东?

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧