我的问题是,当客户端调用服务器上的方法来获取具有特定位置的流时,流每次都会有一个位置= 0。
我该怎么办?
服务器方法:
public Stream SearchTorrent(int TorrentID, int Position)
{
string FilePatch = ClientBusinessLogic.MyTorrents().Where((MyTorrent1) => MyTorrent1.TorrentID == TorrentID).ToList().First().Patch;
Stream File = new FileStream(FilePatch, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
File.Position = Position;
return File;
}
客户端方法:
Stream SeederFile = this.SeederInterface.SearchTorrent(TorrentID, Part.From);
Part.From值不为0。 但返回的流回来时位置为vlaue 0。
答案 0 :(得分:1)
通过引用客户端不会返回从服务器方法返回的Stream
。那就是:他们没有得到你的流。
他们获得的是您的内容(从Position
开始)流式传输到他们,因此他们从0开始获得一个流,其中包含原始流中数据的尾部。
基本上:您无法返回对流的引用。你得到了内容的副本。
你究竟想做什么?
更新:如果要返回文件的某个部分,可以使用byte[]
。无论如何,这基本上都是通过电线的。这种方法的缺点是你必须将块读入服务器的内存中。
因此,作为优化,您仍然可以返回Stream
。此流可以包装您要返回的文件部分。请注意,它始终从零位开始。