【发布时间】:2015-10-16 19:40:31
【问题描述】:
我不确定这是 Java 问题还是 TCP 问题,还是两者兼而有之:
我有一些使用 Apache Mina 的服务器代码,它运行一个在给定套接字上侦听 TCP 的服务器。我拥有的处理程序扩展了 IoHandlerAdapter。我正在使用它通过 HTTP/1.1 将相机连接到 Java 服务器
问题是:如果我建立连接然后完全断开摄像头(拉电源或拉网络),我必须等到调用 sessionIdle 方法才能检测到会话现在已经死了(然后显式关闭来自服务器端的会话)。
我的问题是:有没有办法知道 TCP 会话被客户端立即中断了?或者这只是 TCP 会话 / Mina 的工作方式?
理想情况下,sessionIdle 仅适用于 TCP 套接字尚未终止但客户端(相机)已停止通过套接字进行通信的情况......并且当套接字实际被终止时(由客户端杀死),其他一些机制会捕获/网络)。
注意:我正在覆盖 exceptionCaught(),但在我拔掉电源或网络的情况下,我看不到它被调用。它只是坐到空闲时间然后调用 sessionIdle()。
谢谢!
【问题讨论】: