关于取消接收数据包#cancelReceivePacket()
来源:9-16 消息分片设计与实现-接收调度-2
none_nkn
2020-06-30
如下图,当接收到取消标记帧时,会取消该帧对应包的接收。在cancelReceivePacket()方法中取消接收逻辑当作一种“异常完成接收”来处理,即provider.completedPacket(packet, false)。最终会走Packet的close–>closeStream–>buildEntity。想问:如果取消的是文件类型的包,该文件包已经接收了部分数据,产生了临时的接收文件Xxx.tmp,此时取消接收该临时文件会被同时删除还是留存在磁盘中?取消发送逻辑完成了但没有这方面的测试。
写回答
1回答
-
会留存在本地文件里,默认不会删除。但是会将其抛给外部,当外部收到该消息时可以做容错处理:
获取已接收的长度
使用消息机制与对方通讯,然后得到后续发送的长度
接收后续的数据,并将其嫁接到已接收的文件上
这其实就是断点续传的原理。
00
相似问题
关于 Packet 中的 Stream
回答 1
发送假数据问题
回答 1