我使用dephi7的客户端/服务器套接字组件通过tfilestream将文件从客户端发送到服务器。
我能够获取服务器端接收文件的进度, 但在客户端,我如何获取文件发送的进度?
这是我发送文件的方式:
fstream:=tfilestream.Create(opendialog1.FileName,fmOpenRead);
clientsocket1.Socket.SendStream(fstream);
感谢并感谢您的帮助。
最佳答案
看起来TClientSocket
没有提供任何进度反馈。我看到两种选择:
在循环中使用
TStream.Read
和TClientSocket.Socket.SendBuf
,而不是SendStream
。从流中读取数据 block 然后发送。重复此操作,直到到达流的末尾。编写一个
TStream
后代类来包装(或装饰)另一个流。它的Read
、Write
和Seek
方法可以简单地转发到包装的流,但您也可以向包装器添加一些事件,这样您就可以每次套接字代码从流中读取数据 block 时都会收到通知 -SendStream
方法本质上与我在第一个替代方案中描述的相同。
关于delphi - 如何获取socket.SendStream的进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2824326/