|
#1
|
||||
|
||||
Работа с файлом
Работаю с сокетами, возник вопрос - как отследить скачку файла? Т.е. отправляю файл с клиента на сервер, как мне проследить сколько байт файла уже скачалось? Файл передаю примитивно:
Код:
Socket.SendStream(TFileStream.Create('123.txt', fmOpenRead or fmShareDenyWrite)); Код:
private FStream: TFileStream; -//-//- procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); var iLen: Integer; Bfr: Pointer; begin iLen := Socket.ReceiveLength; GetMem(Bfr, iLen); try Socket.ReceiveBuf(Bfr^, iLen); FStream.Write(Bfr^, iLen); finally FreeMem(Bfr); end; end; procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); begin FStream := TFileStream.Create('1.txt', fmCreate or fmShareDenyWrite); end; Как мне вывести процесс передачи например в progressbar? Алкоголик-аморал, явная угроза обществу Блин, я уже местный, а все равно нифига не знаю... |
#2
|
|||
|
|||
Ну тут все просто. Перед отправлением файла надо отправить размер, а потом при получении измерять размер потока полученного и результат в прогресс.
APPLICATION.TERMINATOR |
#3
|
||||
|
||||
Ama, не так всё просто. Этим мы позволим вывести процесс на сервере, но, как я понял, это надо сделать и для клиента.
Я насколько помню, при считывании через TFileStream, изменяется его свойство Position... Можно плясать с ним, вопрос, как... Вот этого не догоняю. Но, куда копать, направил. Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |