如果正常的关闭连接或者 管道

其实一般我们关闭连接或者是管道,都是 先关闭 输出 流或者输出管道的。但是我们不知道为什么,或者说这个才是规范。

HTTP 规范建议, 当客户端或服务器突然要
关闭一条连接时, 应该“正常地关闭传输连
接”, 但它并没有说明应该如何去做。
总之, 实现正常关闭的应用程序首先应该关
闭它们的输出信道, 然后等待连接另一端的
对等实体关闭它的输出信道。 当两端都告诉
对方它们不会再发送任何数据(比如关闭输
出信道) 之后, 连接就会被完全关闭, 而不
会有重置的危险。
但不幸的是, 无法确保对等实体会实现半关
闭, 或对其进行检查。 因此, 想要正常关闭
连接的应用程序应该先半关闭其输出信道,
然后周期性地检查其输入信道的状态(查找
数据, 或流的末尾) 。 如果在一定的时间区
间内对端没有关闭输入信道, 应用程序可以
强制关闭连接, 以节省资源。

总之, 关闭连接的输出信道总是很安全的。
连接另一端的对等实体会在从其缓冲区中读
出所有数据之后收到一条通知, 说明流结束
了, 这样它就知道你将连接关闭了。
关闭连接的输入信道比较危险, 除非你知道
另一端不打算再发送其他数据了。 如果另一端向你已关闭的输入信道发送数据, 操作系
统就会向另一端的机器回送一条 TCP“连接
被对端重置”的报文, 会导致 连接的另一端 读取不到缓存的数据。


《 HTTP 权威指南 》

转载于:https://my.oschina.net/ouminzy/blog/1806152

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值