客户端异常退出,服务端如何自动释放该连接的线程!!

shun926 2006-04-28 10:46:21
如题!
...全文
385 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
fisker0303 2006-05-09
  • 打赏
  • 举报
回复
心跳包。
dasiu 2006-05-09
  • 打赏
  • 举报
回复
1)正常退出时候,响应onclose();
2)对于非正常退出,最好的办法是使用 “心跳包”:客户定时相服务器发送数据,服务器定时循环检查所有连接状态,如果超过时间没有接到客户心跳包,就关闭该线程。
peakarwen 2006-05-09
  • 打赏
  • 举报
回复
用消息机制来做,响应Close事件不就行了
flowlight 2006-05-09
  • 打赏
  • 举报
回复
心跳包
jinxuliang 2006-05-06
  • 打赏
  • 举报
回复
按间隔发个心跳包来维持.
fakoo 2006-05-02
  • 打赏
  • 举报
回复
记得要设置accept的超时时间。(其实设了超时间就不用那两个变量了,当accept超时就判断就行了)
fakoo 2006-05-02
  • 打赏
  • 举报
回复
你在服务器程序中设两个变量,一个记录前一间隔的值(记为a),另一个记录间隔时间内值(记为b),并规定一定的时间间隔(如在这个间隔内没访问就认为它死,你自己去决定这个间隔)每当accept成功调用一次就将b加1,当时间间隔到了的时候比较a与b的值,如果相等则表示这段时内没连接,退出线程,否则将a的值设为b,继续循环。
shun926 2006-04-30
  • 打赏
  • 举报
回复
谢谢你的解答!
可是现在客户端是一个固定的不可编程设备!
shun926 2006-04-28
  • 打赏
  • 举报
回复
也就是说,在监听的端口上如何判断某个设备没有了连接请求?
robin_yao 2006-04-28
  • 打赏
  • 举报
回复
或者用个链路测试包
就是每隔一段时间发个包给服务器。
如果你正在发包,就不要发链路测试包了。
否则每隔30秒或者什么的一个时间段发一个测试包过去。

假如client和server之间没包传了。服务端又在30秒收不到测试链路包就认为client挂了
meicaikourou 2006-04-28
  • 打赏
  • 举报
回复
定一个时间,如果无响应,则发送一包,若为SOCK_ERROR,则结束线程
wqrz 2006-04-28
  • 打赏
  • 举报
回复
客户端定时一分种给服务器发一个包 (包的内容随便)
shun926 2006-04-28
  • 打赏
  • 举报
回复
客户端 搞个存活时间???
如何搞呢??费解
robin_yao 2006-04-28
  • 打赏
  • 举报
回复
给客户端 搞个存活时间怎么样
时间一到,就认为他异常,挂了

18,356

社区成员

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

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