通过观察tcp状态中断http长连接

当用户希望中断耗时的HTTP长连接时,可以通过关闭TCP连接来实现。在服务端,通过调用netstat命令监控TCP连接状态,如'ESTABLISHED'表示连接正常,其他状态则表示未连接。作者提供了一个工具类用于检测客户端连接是否关闭,以及时终止处理,减少服务器压力。建议将阻塞操作分页并降低粒度,以提高响应速度。
摘要由CSDN通过智能技术生成

    传统的servlet、sprimg mvc等基于http协议的web服务端程序大都采用阻塞式io,比如通过orm框架读写数据库,或者读写文件等,有时遇上耗时的操作,但用户想要中断这一次请求,是不太可能的,即使用户关闭前端页面,但后台已响应到该请求,所以无法取消这次处理(一旦阻塞在io操作中的话)。

      如果遇到用户想取消这次长链接该怎么办呢?web服务是基于http协议的一种服务,而http又位于TCP/IP模型的顶端(应用层),是对传输层层的封装。

iso/osi模型

      因此客户端关闭连接的本质就是关闭了客户端到服务端的TCP连接,可通过操作系统的netstat命令监控其连接状态。关于TCP连接的各种状态,如下图所示:

 这里牵涉到关于TCP连接三次握手和四次挥手的一些知识,可参考此文:

https://blog.csdn.net/huangyuhuangyu/article/details/78220005

 

      因此,为了在服务端检测到此次tcp连接是否已中断,可调用操作系统的netstat命令。笔者采用linux

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值