要明白HTTP长连接 , 得先明白Socket连接什么是Socket?百度一下 , 根本看不懂要理解Socket , 得先理解TCP
文章插图
TCP是传输层协议 , 有linux、windows等操作系统实现
Socket是对TCP协议抽象出来的上层接口 , 供操作系统上层的应用程序使用上层应用程序来使用socket , 比如Tomcat、比如浏览器
浏览器在发送一个请求时 , 先得建立一个Socket , 比如:
Socket socket = new Socket("localhost", 8081);
建立完Socket连接之后 , 浏览器开始构造数据 , 通过OutputStream发送出去 。这里涉及到Socket服务端的几个问题 。
如果服务端Socket没有使用InputSteam来接收数据 , 那么数据存在哪了 。
对于服务端Socket , 有一个recvbuf来存储数据
所以JAVA中 , 在利用InputSteam去read数据时 , 是从recvbuf来读取数据的 , 演示一下read方法:
- 如果没有使用read会怎么样
- 如果使用了read , 那么read方法的返回值表示什么意思?
比如Tomcat从Socket得到数据之后 , 就需要解析数据 , 那么怎么解析呢?
解析数据 , 解析请求行 , 请求头解析完数据之后 , 接下来该如何?
这里就是所谓的长连接和短连接 。
比如Tomcat解析完某个HTTP请求 , 并调用了Servlet之后 , 就会判断是否需要关闭Socket 。
那该如何判断呢?
- 判断请求头Connnection , 如果是close则关闭socket , 如果是keep-alive , 则不关闭
- 判断keepAliveTimeout、maxConnections、maxKeepAliveRequests
【HTTP长连接是啥?底层是如何工作的?Tomcat是如何实现长连接的?】
推荐阅读
- 外网远程桌面连接设置
- 白炒鲜竹蛏的做法
- 朱元璋为什么要杀掉已经76岁的李善长? 朱元璋杀李善长的真正原因是什么?
- 宋朝的官帽两边的翅为什么那么长 宋朝官帽为什么长翅膀
- 春运旅途憋尿危害大 长途出行这些千万别忍着
- 春节长假谨防急性脑血管病
- 老中医解说怎么吃红枣能长寿
- 吃杏脯会胖吗 吃肉脯会长胖吗
- 周朝确立的立嫡以长不以贤 立嫡以长不以贤,立子以贵不以长
- 历史长河中的茶马古道,正在迅速消失的茶马古道马帮