1

我的问题是,当客户端调用服务器上的方法以获取具有特定位置的流时,流每次都带有 position = 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 返回。

4

1 回答 1

1

Stream从您的服务器方法返回的不是通过引用客户端返回的。那就是:他们没有得到你的信息流。

他们得到的是您的内容(从 开始Position)流式传输给他们,因此他们从 0 开始获得一个流,数据的尾端来自您的原始流。

基本上:您不能返回对流的引用。你会得到一份内容的副本。

你到底想做什么?

更新:如果要返回文件的一部分,可以使用byte[]. 无论如何,这基本上是通过电线进行的。这种方法的缺点是您必须将块读入服务器上的内存。

因此,作为一种优化,您仍然可以返回Stream. 此流可以包装您要返回的文件部分。请注意,它将始终从零位置开始。

于 2013-04-15T10:36:12.590 回答