猿问

TCP套接字连接是否“保持活动”?

我听说过HTTP keep-alive但是现在我想打开一个与远程服务器的套接字连接。
现在这个套接字连接是否会永远保持打开状态,或者是否存在与之相关的超时限制,类似于HTTP keep-alive?

哔哔one
浏览 501回答 3
3回答

尚方宝剑之说

TCP套接字保持打开状态,直到它们关闭。也就是说,在没有实际发送数据的情况下检测断开连接(断路,如路由器死亡等,而非关闭)非常困难,因此大多数应用程序每隔一段时间就会做一些ping / pong反应,以确保连接仍然存在。

紫衣仙女

您正在寻找SO_KEEPALIVE套接字选项。在的Java的Socket API暴露了“保活”通过应用程序setKeepAlive和getKeepAlive方法。编辑:SO_KEEPALIVE在OS网络协议栈中实现,不发送任何“真实”数据。保持活动间隔取决于操作系统,并且可以通过内核参数进行调整。由于没有数据发送,SO_KEEPALIVE只能测试网络连接的活跃程度,而不能测试套接字所连接的服务的活跃程度。要测试后者,您需要实现一些涉及向服务器发送消息并获得响应的内容。
随时随地看视频慕课网APP

相关分类

Java
我要回答