社区
Java
帖子详情
建立了一个socket连接,如果服务器端故障了(意外断电),客户端如何知道此socket不能使用了呢?
simbalily
2003-08-07 10:35:07
建立了一个socket连接,如果服务器端故障了(意外断电),客户端如何知道此socket不能使用了呢?
客户端如何获得socket的状态(ESTABLISHED,time_out,fin_wait_1等)?
...全文
132
2
打赏
收藏
建立了一个socket连接,如果服务器端故障了(意外断电),客户端如何知道此socket不能使用了呢?
建立了一个socket连接,如果服务器端故障了(意外断电),客户端如何知道此socket不能使用了呢? 客户端如何获得socket的状态(ESTABLISHED,time_out,fin_wait_1等)?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
心平至和
2003-08-08
打赏
举报
回复
客户自已就断了,退出线程没事了。
javahui
2003-08-08
打赏
举报
回复
应该会有异常抛出。你可以测试啊!把服务器插头拨掉看有什么结果出来??
Socket
连接
心跳包的机制总结
文章目录
Socket
连接
心跳包的机制总结心跳包的由来心跳包的作用心跳包由服务端还是
客户端
发送?
Socket
连接
心跳包的机制总结 心跳包的由来 心跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个
客户端
还活着。事实上这是为了保持长
连接
,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的
一个
空包。 在TCP的机制里面,本身是存在有心跳包的机制的,也就是TCP的选项:SO_KEEPALIVE。系统默认是设置的2小时的心跳频率。但是它检查不到机器
断电
、网线
网络编程中添加心跳使
客户端
与
服务器端
要保持长
连接
网络编程中为保持服务器与
客户端
长链接,需要添加心跳,即
客户端
定时的向
服务器端
发送报文,定时到后,接收的反馈的心跳报文,则继续,如果没有接到报文,则关闭该
socket
,函数跳出后重新
建立
socket
。
服务器端
,收到心跳后,立即转发回给
客户端
。当固定时间收不到心跳信号,则关闭该
socket
.
服务器端
收不到心跳的原因: 1)网线掉了; 2)
客户端
程序所在装置
断电
了或被重启了等等,导致
客户端
并没有正常的close
socket
,所以需要
服务器端
要定时判是否收到心跳。 同样,
客户端
收不到心跳的原因类.
Socket
长
连接
和短
连接
1 概念
Socket
:
socket
实际上是对TCP/IP进行的封装,我们可以
使用
socket
套接字通过
socket
来传输。首先我们需要明白的
一个
概念就是通道,简单地说通道就是两个对端可以随时传输数据的信道。我么常说的所谓
建立
socket
连接
,也就是
建立
了
客户端
与
服务器端
的通道。 长短
连接
:显而易见,长
连接
也就是这个
socket
连接
一直保持
连接
,也就是通道一直保持通畅,两个对端
Socket
保证长
连接
的两种方式
1.1 方法一:应用层自己实现的心跳包 由应用程序自己发送心跳包来检测
连接
是否正常,大致的方法是:服务器在
一个
Timer事件中定时 向
客户端
发送
一个
短小精悍的数据包,然后启动
一个
低级别的线程,在该线程中不断检测
客户端
的回应, 如果在一定时间内没有收到
客户端
的回应,即认为
客户端
已经掉线;同样,如果
客户端
在一定时间内没 有收到服务器的心跳包,则认为
连接
不可用。 1.2 方法二:TCP的KeepAlive保活机制 因为要考虑到
一个
服务器通常会
连接
多个
客户端
,因此由用户在应用层自己实现心跳包,代码较多 且
血小板储存系统:血液安全升级与智能温控驱动的血站及医院高可靠设备市场.docx
血小板储存系统:血液安全升级与智能温控驱动的血站及医院高可靠设备市场
Java
51,407
社区成员
86,108
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章