使用setsockopt()函数系统报10014的错误

Leryan 2004-12-15 07:37:46
我在服务器端使用setsockopt()函数设置客户端连接的socket option时
系统报10014的错误
我用的是tcp连接。郁闷了好久,各位高人帮忙看看究竟哪的问题?
以下是代码。
请指教:
{
unsigned int nTimeOut(2000);// set send timeout is 2m
if(setsockopt(
socClient,
SOL_SOCKET,//换IPPROTO_TCP也是一样报10014的错
SO_RCVBUF,
(char *) &nTimeOut,
sizeof(nTimeOut) == SOCKET_ERROR))
{
int err = GetLastError();
return false;
}
}
...全文
542 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Leryan 2004-12-15
  • 打赏
  • 举报
回复
问题还有
unsigned int nTimeOut(2000);// set send timeout is 2m
if(setsockopt(
socClient,
SOL_SOCKET,
SO_SNDTIMEO,
(char *) &nTimeOut,
sizeof(nTimeOut)) == SOCKET_ERROR)
{
int err = GetLastError();//err = 10042

}
调用的时候报10042的错误,
其它的调用
const char chOpt = 1;
if (setsockopt(socClient,
IPPROTO_IP,
TCP_SO_SNDBUF, &chOpt,
sizeof(char)) == SOCKET_ERROR)
{
int err = GetLastError();
}
却正常,
为何?郁闷。
gdy119 2004-12-15
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3592/3592436.xml?temp=7.484072E-02
needways 2004-12-15
  • 打赏
  • 举报
回复
设置为 2000 是说:如果内部缓冲区已满的话,则等待2秒钟,如果 2 秒钟后还是如此的话就返回 WSAENOBUFS 错误。
Leryan 2004-12-15
  • 打赏
  • 举报
回复
另外。
我还有一个问题干脆一起问了。
同上:

unsigned int nTimeOut(2000);// set send timeout is 2m
if(setsockopt(
socClient,
SOL_SOCKET,
SO_SNDTIMEO,
(char *) &nTimeOut,
sizeof(nTimeOut)) == SOCKET_ERROR)
{

}

是不是我在设置了socket 发送超时后,
只要在2m时间内没有发送成功就会通知我。
谢谢。
Leryan 2004-12-15
  • 打赏
  • 举报
回复
非常感谢
needways(武林怪杰)


Leryan 2004-12-15
  • 打赏
  • 举报
回复
果然是这样,
回复人: needways(武林怪杰)
呵呵。


needways 2004-12-15
  • 打赏
  • 举报
回复
sizeof(nTimeOut) == SOCKET_ERROR 变成了 1 而不是 4。
needways 2004-12-15
  • 打赏
  • 举报
回复
unsigned int nTimeOut(2000);// set send timeout is 2m
if(setsockopt(
socClient,
SOL_SOCKET,//换IPPROTO_TCP也是一样报10014的错
SO_RCVBUF,
(char *) &nTimeOut,
sizeof(nTimeOut)) == SOCKET_ERROR)
{
int err = GetLastError();
return false;
}
needways 2004-12-15
  • 打赏
  • 举报
回复
括号括错了。

== SOCKET_ERROR 后面的一个括号应该在前面。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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