bittorrent assemble 缺件怎么办?
How does the bittorrent assemble the missing pieces?
我使用 BitTorrent,有时会遇到没有种子(缺失部分)的文件。
那时,我们有时会强制结束文件传输并尝试打开未完成的文件(例如图像文件)。
如果幸运的话,即使丢失了某些部分,也可能能够看到下载的图像。
我想人为地重现这种情况,我是这样尝试的:
1) 通过Linux split命令将一个1MB左右的bmp图片文件拆分为16KB,
2) 然后将其中一个分割后的文件设为0 KB。
3) 之后,使用 cat 命令重新加入所有文件。
但是,在这种情况下,与 torrent 的 "lost pieces" 情况不同,文件完全损坏且无法读取。
从理论上讲它似乎没有什么特别的,但是有什么问题吗?我怎样才能实现我想要的?
非常感谢您的帮助。
使用dd
:
dd if=/dev/zero of=image.jpg bs=1 conv=notrunc seek=X count=Y
是X
要删除的文件中的偏移量和Y
字节数。
关于损坏,这取决于文件的类型、您丢失的部分以及您用来读取它的程序。
例如,JPG 文件使用可变 bit-length 编码,这意味着仅丢失一位可能会损坏此后的所有文件。但就此而言,可以有 resyncronization 位流被重置的点,所以从那一点开始,文件看起来没问题。但是这些重新同步点在写入文件时是可选的,并不是每个 reader 在损坏的情况下都尊重它们...
无论如何,丢失 headers 的一部分会使文件完全不可读。
我使用 BitTorrent,有时会遇到没有种子(缺失部分)的文件。
那时,我们有时会强制结束文件传输并尝试打开未完成的文件(例如图像文件)。
如果幸运的话,即使丢失了某些部分,也可能能够看到下载的图像。
我想人为地重现这种情况,我是这样尝试的:
1) 通过Linux split命令将一个1MB左右的bmp图片文件拆分为16KB,
2) 然后将其中一个分割后的文件设为0 KB。
3) 之后,使用 cat 命令重新加入所有文件。
但是,在这种情况下,与 torrent 的 "lost pieces" 情况不同,文件完全损坏且无法读取。
从理论上讲它似乎没有什么特别的,但是有什么问题吗?我怎样才能实现我想要的?
非常感谢您的帮助。
使用dd
:
dd if=/dev/zero of=image.jpg bs=1 conv=notrunc seek=X count=Y
是X
要删除的文件中的偏移量和Y
字节数。
关于损坏,这取决于文件的类型、您丢失的部分以及您用来读取它的程序。
例如,JPG 文件使用可变 bit-length 编码,这意味着仅丢失一位可能会损坏此后的所有文件。但就此而言,可以有 resyncronization 位流被重置的点,所以从那一点开始,文件看起来没问题。但是这些重新同步点在写入文件时是可选的,并不是每个 reader 在损坏的情况下都尊重它们...
无论如何,丢失 headers 的一部分会使文件完全不可读。