客户端断开连接后进程是不是仍继续

Posted

技术标签:

【中文标题】客户端断开连接后进程是不是仍继续【英文标题】:does process still continue after client disconnects客户端断开连接后进程是否仍继续 【发布时间】:2012-11-15 16:19:23 【问题描述】:

当客户端过早地与服务器请求断开连接时,服务器是否仍会执行其余的工作? 具体来说,如果我有以下代码,则在 Java Servlet doGet 中:

公共无效doGet(HttpServletRequest req,HttpServletResponse res)抛出ServletException,IOException 一种(); //客户端在 A() 之后断开连接; 乙(); C(); 如果客户端在 A() 完成后断开连接,B 和 C 还会被执行吗?

【问题讨论】:

【参考方案1】:

是的。服务器不知道断开连接,直到它尝试将某事物写入输出流(作为响应)。然后由于中间的代理服务器或由于输出流缓冲而导致的事件,可能很难知道客户端已断开连接。

【讨论】:

【参考方案2】:

视情况而定。

如果在A()(或任何其他方法)期间,您尝试将响应(使用res)发送回客户端,则会抛出IOException。如果没有被捕获,它将终止 servlet 的执行。

否则计算会在C()之后继续并退出。

【讨论】:

这实际上可能并非在所有情况下都是正确的。响应可能会被缓冲,因此只有在刷新缓冲区时才会出现异常。另一种可能性是中间的代理服务器,它可能会等到整个响应从服务器发送出去,然后再尝试将其发送给客户端。

以上是关于客户端断开连接后进程是不是仍继续的主要内容,如果未能解决你的问题,请参考以下文章

即使设备断开连接,使用 PyQtGraph 的实时绘图仍在绘制

ssh连接断开后 shell进程退出

unity客户端自动断开连接

客户端断开连接后,我是不是必须关闭服务器端的套接字?

客户端断开连接后,WCF操作未运行

如何在关闭ssh连接的情况下,让进程继续运行?