将文件拆分为 UDP 数据包大小的块以进行对等文件共享的最佳方法?

Best way to split files into UDP packet sized chunks for peer to peer file sharing?

我正在开发一个 P2P 文件共享程序,为了以小的方式传递文件,我需要以某种方式拆分上传的文件。 现在,我用C# Streamclass做了一个程序,把一个文件拆分成小文件,放到一个文件夹里,还可以重建。但是,它效率低下并且需要花费大量时间。我想到了根据请求的文件从流中读取带有偏移量的数据,然后不保存发送。但是,我不知道如何按正确的顺序将其添加到接收端,因为数据不会按顺序发送。

附带说明一下,bitTorrent 是如何实现这种功能的?

谢谢

接收方需要存储块。发件人没有。也许,您应该在磁盘上初始化为零的接收器上创建整个文件。然后,您可以在收到孔时填充它们。您需要一个单独的结构来跟踪还有哪些范围,例如 List<Tuple<int, int>>.