2010-05-13 56 views
3

我使用dephi7的客戶端/服務器套接字組件從客戶端向服務器發送tfilestream文件。delphi - 如何獲取socket.SendStream的進度?

我能夠得到在服務器端收到的文件的進度, ,但在客戶端,我如何獲得發送文件的進度?

這是我發送的文件:

fstream:=tfilestream.Create(opendialog1.FileName,fmOpenRead); 
    clientsocket1.Socket.SendStream(fstream); 

感謝和感激的任何幫助。

回答

5

它看起來並不像TClientSocket提供其進展的任何反饋。我看到兩個選擇:

  1. 相反SendStream的,在一個循環中使用TStream.ReadTClientSocket.Socket.SendBuf。從流中讀取數據塊併發送。重複,直到到達流的末尾。

  2. 寫一個TStream後代類包裝(或裝飾)另一個流。本質上SendStream方法 - 它ReadWrite,和Seek方法可以簡單地轉發到包裹流,但你也可以一些事件增加了包裝,所以你可以在每個插座代碼讀取數據塊從流時間通知在第一個選擇中做了與上面描述的相同的事情。