返回信息流小白一枚 问一下csocket有没有关于心跳的实现 看了一下文档 cayncsocket 里面有个设置so keepalive参数 是否有用 还是说做个监控来实现 目标是检测50ms是否收到通信
这是一条镜像帖。来源:北邮人论坛 / cpp / #98812同步于 2019/4/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于csocket心跳机制
fa520875
2019/4/13镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
keepalive可以,印象中就是对WinSock的封装...很久不看MFC的祖传代码了...
WinApi默认的心跳时常好像很久,但好像可以用setsockopt来改
【 在 fa520875 的大作中提到: 】
: 小白一枚 问一下csocket有没有关于心跳的实现 看了一下文档 cayncsocket 里面有个设置so keepalive参数 是否有用 还是说做个监控来实现 目标是检测50ms是否收到通信
好的 谢谢大神 想问一下这个keepalive设置之后 如果发生客户端过服务端断开 会触发回调吗 还是自动重连机制在里面。 最近接触的一个项目用了mfc~[ema1]
【 在 tonyjansan 的大作中提到: 】
: keepalive可以,印象中就是对WinSock的封装...很久不看MFC的祖传代码了...
:
: WinApi默认的心跳时常好像很久,但好像可以用setsockopt来改
如果是交互很频繁的信道,还是倾向上层应用自己来保活。
keepalive并不会引发重连,只会告诉你连接老化,并且不具备实时性;如果你只在Windows平台做的话,又一定希望使用系统的保活机制的话,~~我倾向于用SIO_KEEPALIVE_VALS这个属性,相关文档:
https://msdn.microsoft.com/en-us/library/windows/desktop/dd877220(v=vs.85).aspx~~
【 在 fa520875 的大作中提到: 】
: 好的 谢谢大神 想问一下这个keepalive设置之后 如果发生客户端过服务端断开 会触发回调吗 还是自动重连机制在里面。 最近接触的一个项目用了mfc~
好的 这块我仔细研究一下
【 在 tonyjansan 的大作中提到: 】
: 如果是交互很频繁的信道,还是倾向上层应用自己来保活。
:
: keepalive并不会引发重连,只会告诉你连接老化;如果你只在Windows平台做的话,又一定希望使用系统的保活机制的话,我倾向于用SIO_KEEPALIVE_VALS这个属性,相关文档:
刚看了下这个参数好像Win8以后被禁用了,那还是得用SO_KEEPALIVE的,Windows平台自身兼容性也是件麻烦事
【 在 fa520875 的大作中提到: 】
: 好的 这块我仔细研究一下
嗯 我现在在上层做了监控线程来保活 原理是收发数据记录时间 定时监控线程去检验时间 如果收发时间间距过长就会做日志和重连处理 但是没有实地的测试 还需要进一步验证
【 在 tonyjansan 的大作中提到: 】
: 刚看了下这个参数好像Win8以后被禁用了,那还是得用SO_KEEPALIVE的,Windows平台自身兼容性也是件麻烦事
: