我听说过HTTP keep-alive但是现在我想打开一个与远程服务器的套接字连接。现在这个套接字连接是否会永远保持打开状态,或者是否存在与之相关的超时限制,类似于HTTP keep-alive?
3 回答
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
TCP套接字保持打开状态,直到它们关闭。
也就是说,在没有实际发送数据的情况下检测断开连接(断路,如路由器死亡等,而非关闭)非常困难,因此大多数应用程序每隔一段时间就会做一些ping / pong反应,以确保连接仍然存在。
紫衣仙女
TA贡献1839条经验 获得超15个赞
您正在寻找SO_KEEPALIVE套接字选项。
在的Java的Socket API暴露了“保活”通过应用程序setKeepAlive和getKeepAlive方法。
编辑:SO_KEEPALIVE在OS网络协议栈中实现,不发送任何“真实”数据。保持活动间隔取决于操作系统,并且可以通过内核参数进行调整。
由于没有数据发送,SO_KEEPALIVE只能测试网络连接的活跃程度,而不能测试套接字所连接的服务的活跃程度。要测试后者,您需要实现一些涉及向服务器发送消息并获得响应的内容。
添加回答
举报
0/150
提交
取消