为什么我用 SetSockOpt设置接受超时不起作用?

shjqk 2006-09-20 04:04:51
使用 CSocket,发送后如果服务器没有返回消息,程序会在Receive时阻塞
我想用SetSockOpt 设置超时,如果没有回复的话超时后执行下面的内容
但是我设置后好象不起作用
请教是什么原因
CSocket sSocket;
sSocket.Create()
//设置接收超时
int nNetTimeout=1000;//1秒
sSocket.SetSockOpt(SO_RCVTIMEO,(char *)&nNetTimeout,sizeof(int) ,SOL_SOCKET);
//
sSocket.Connect(......)
sSocket.Send(......)
sSocket.Receive(......) //还是会在这阻塞,不知道该如何实现收不到数据时超时后执行下面内容

请教
...全文
678 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdf123321 2006-09-24
  • 打赏
  • 举报
回复
用select()
DentistryDoctor 2006-09-20
  • 打赏
  • 举报
回复
如果需要使用SO_RCVTIMEO选项,并用WSASocket函数创建套接字,那么必须将WSA_FLAG_OVRLAPPED指定成为WSASocket的dwFlags参数的一部分。
templarzq 2006-09-20
  • 打赏
  • 举报
回复
CSocket是阻塞的。。得设成非阻塞模式,然后设置超时,再设回阻塞模式
萧山夜雨 2006-09-20
  • 打赏
  • 举报
回复
你直接用API试试,我记得可以的。

18,357

社区成员

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

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