socket客户端如何判断服务端挂了

shsyzl007 2019-03-01 04:20:18
我之前的方式是服务端向客户端发送心跳包,客户端收不到服务端的包了就说明服务端挂了

现在用SuperSocket发现服务端和客户端没有任何数据通信,服务端如果关闭,客户端马上就可以知道

大神说说这是什么机制,怎么实现的?
...全文
269 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_44804375 2019-03-20
  • 打赏
  • 举报
回复
引用 楼主 shsyzl007的回复:
我之前的方式是服务端向客户端发送心跳包,客户端收不到服务端的包了就说明服务端挂了

现在用SuperSocket发现服务端和客户端没有任何数据通信,服务端如果关闭,客户端马上就可以知道

大神说说这是什么机制,怎么实现的?
现在用SuperSocket发现服务端和客户端没有任何数据通信,服务端如果关闭,客户端马上就可以知道
weixin_44804375 2019-03-20
  • 打赏
  • 举报
回复
引用 楼主 shsyzl007的回复:
我之前的方式是服务端向客户端发送心跳包,客户端收不到服务端的包了就说明服务端挂了

现在用SuperSocket发现服务端和客户端没有任何数据通信,服务端如果关闭,客户端马上就可以知道

大神说说这是什么机制,怎么实现的?
现在用SuperSocket发现服务端和客户端没有任何数据通信,服务端如果关闭,客户端马上就可以知道
一转程序员 2019-03-04
  • 打赏
  • 举报
回复
引用 4 楼 shsyzl007的回复:
解决方案
客户端不断向服务器端发动0字节的数据包,如果不引发错误说明网络连接,否则网络断开
我试过不会报错的,得用心跳
一转程序员 2019-03-04
  • 打赏
  • 举报
回复
引用 1 楼 以专业开发人员为伍的回复:
实际上只有短连接才需要业务心跳机制,长连接通讯在 tcp 底层就支持这种及时的状态通知,用不着心跳。当然你在长连接的机制中写一个业务心跳也可以。
长连接也会丢失的,不一定什么时候服务器就收不到数据了
shsyzl007 2019-03-01
  • 打赏
  • 举报
回复
解决方案
客户端不断向服务器端发动0字节的数据包,如果不引发错误说明网络连接,否则网络断开
  • 打赏
  • 举报
回复
比如说 websocket,有的浏览器据说30秒钟才 pong 回复,有的浏览器干脆就不支持 pong。那么基本上所有的浏览器都能第一时间知道和抛出 websocket 的闪断事件。
shsyzl007 2019-03-01
  • 打赏
  • 举报
回复
服务端可以很简单的判断客户端断联
但客户端找不到有用的方法判断服务端断联。。
  • 打赏
  • 举报
回复
实际上只有短连接才需要业务心跳机制,长连接通讯在 tcp 底层就支持这种及时的状态通知,用不着心跳。当然你在长连接的机制中写一个业务心跳也可以。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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