我使用dephi7的客户端/服务器套接字组件从客户端向服务器发送带有tfilestream的文件.
我能够在服务器端获得文件的进度,但在客户端,我如何获得发送文件的进度?
这是我发送文件的方式:
fstream:=tfilestream.Create(opendialog1.FileName,fmOpenRead);
clientsocket1.Socket.SendStream(fstream);
Run Code Online (Sandbox Code Playgroud)
感谢并感谢任何帮助.
它看起来不像TClientSocket提供任何反馈的进展.我看到两种选择:
而不是SendStream,使用TStream.Read和TClientSocket.Socket.SendBuf循环.从流中读取一个数据块然后发送它.重复,直到到达流的末尾.
编写一个TStream包装(或装饰)另一个流的后代类.它Read,Write和Seek方法可以简单地转发到包装流,但是你也可以向包装器添加一些事件,这样每次套接字代码从流中读取一个数据块时都可以得到通知 - 该SendStream方法基本上做同样的事情我在上面的第一个替代方案中描述过.