CSocket(服务端)中如何超时处理?!

smile2008 2004-10-20 11:14:05
使用的是CSocket的消息处理机制,阻塞,多线程,每个socket连接起一个线程。想采用定时器,但是无法识别超时的socket对象,希望大家讨论启发
...全文
238 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
月吻长河 2004-10-20
  • 打赏
  • 举报
回复
CSocket本身是阻塞的,对超时的响应很滞后。
gdy119 2004-10-20
  • 打赏
  • 举报
回复
每当server accept()一个socket,对该socket设置:
int rcvtime=1000;(1秒)
setsockopt(socket,SOL_S0CKET,SO_SNDTIMEO,(char *)&rcvtime,sizeof(rcvtime));//send
setsockopt(socket,SOL_S0CKET,SO_RCVTIMEO,(char *)&rcvtime,sizeof(rcvtime));//recv
不知道这样可行不?
smile2008 2004-10-20
  • 打赏
  • 举报
回复
当下真的是没有什么好的解决办法
DentistryDoctor 2004-10-20
  • 打赏
  • 举报
回复
SO_SNDTIMEO/SO_RECVTIMEO设置超时,如果超时,send/recv会有错误代码返回的。
try876 2004-10-20
  • 打赏
  • 举报
回复
超时:发一个请示,如果在超时时间内(比如说10秒)没有任何返回信息,就是超时
DentistryDoctor 2004-10-20
  • 打赏
  • 举报
回复
既然用线程了,为何还要用定时器?
smile2008 2004-10-20
  • 打赏
  • 举报
回复
现在是不是对发言次数不做限制了?

smile2008 2004-10-20
  • 打赏
  • 举报
回复
都是短连结
qq_13939330 2004-10-20
  • 打赏
  • 举报
回复
这种我用过,在QQ的四国大战程序中.

客户端每隔一定时间向服务器发送在线标志,如果服务器在一定时间检查到此客户端套接字标志为不在线的话,则作出断线处理!
smile2008 2004-10-20
  • 打赏
  • 举报
回复
不是这样的我对线程数进行了限制,我的发言数够了,希望谁能直切要害
yzhgr 2004-10-20
  • 打赏
  • 举报
回复
服务器段采用多线程的话是不是有局限性呢?如果同时有10000个客户端连接,程序就创建10000个线程,有着10000个线程不知道这样的话运行着是不是会出问题!
smile2008 2004-10-20
  • 打赏
  • 举报
回复
有问题就有解决办法,我现在把socket对象存入了一个数组,但是问题在于我不知道哪个对象是超时的。谁有成功的案例可以提供一下。另外,在做客户程序的时候我使用了select进行了超时处理,比较成功,CSocket的服务端却打住了

18,363

社区成员

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

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