簡體   English   中英

如何通過wcf發送具有特定位置的流?

[英]How can I send stream with a specific position through wcf?

我的問題是,當客戶端調用服務器上的方法以在特定位置獲取流時,每次流的位置都為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返回。

從服務器方法返回的Stream不會通過引用客戶端返回。 那就是:他們不會吸引您。

他們得到的是您的內容(從Position開始)流式傳輸到他們,因此他們得到的流從0開始,原始數據流的末尾。

基本上:您不能返回對流的引用。 您將獲得內容的副本。

您實際上在嘗試做什么?

更新:如果要返回文件的一部分,則可以使用byte[] 無論如何,這基本上就是線路上正在發生的事情。 這種方法的缺點是您必須將塊讀入服務器的內存中。

因此,作為優化,您仍然可以返回Stream 該流可以包裝您要返回的文件部分。 請注意,它將始終從零位置開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM