【问题标题】:What makes a connection reusable是什么使连接可重用
【发布时间】:2014-05-16 13:51:52
【问题描述】:
我在 Oracle 网站上看到了这样的描述:
“由于 TCP 本质上是基于流的协议,为了重用现有连接,HTTP 协议必须有一种方法来指示上一个响应的结束和下一个响应的开始。因此,需要连接上的所有消息必须具有自定义的消息长度(即,不是由连接关闭定义的)。通过设置 Content-Length 标头或在分块传输编码的实体主体的情况下实现自我划分,每个块都以一个大小开始,响应正文以一个特殊的最后一个块结束。”
见Oracle doc
我不知道如何实现,谁能给我一个Java实现的例子?
【问题讨论】:
标签:
java
keep-alive
persistent
【解决方案1】:
如果您尝试以与 HTTP 相同的方式实现“自划界”:
- HTTP 1.1 规范定义了它的工作原理,
- (比如)Apache HTTP 库的源代码是其实现的一个示例。
事实上,建议不要尝试自己从头开始实现此 (HTTP)。使用现有的实现。
另一方面,如果你只是想实现自己的 ad-hoc 自划界方案,那真的很容易做到。
- 发件人计算出消息的大小,以字节或字符或其他一些有意义的单位为单位。
- 发件人发送邮件大小,后跟邮件本身。
在另一端:
- 接收方读取消息大小,然后读取必要数量的字节、字符,以形成消息正文。
另一种方法是让发件人发送消息后跟一个特殊的消息结束标记。要完成这项工作,您需要保证没有消息包含消息结束标记,或者您需要使用某种转义机制。
实现这些方案是简单的 Java 编程。
什么使连接可重用
您在问题中引用的文字回答了这一点。