Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.19;
Скачать: CL | DM;

Вниз

Сокеты. Перекачка файла. Глюк!   Найти похожие ветки 

 
BJValentine   (2004-07-14 13:41) [0]

Перекачиваю файл. На сервере



procedure TForm1.SS1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var St: TFileStream;
begin
   if Socket.ReceiveText<>"1" then Exit;
   St:=TFileStream.Create("C:\Downloads\bro.avi",fmOpenRead);
   Socket.SendStream(St);
end;




на клиенте:



procedure TForm1.CS1Read(Sender: TObject; Socket: TCustomWinSocket);
var
  Buf:^byte;
  Len: Integer;
  f: File;

begin
  Len:=Socket.ReceiveLength;

  GetMem(buf,len);
  Socket.ReceiveBuf(Buf^,len);
  AssignFile(f,"c:\2.avi");
  if isRecStart then
     begin
        Rewrite(f,1);
        isRecStart:=false;
     end
  else
     begin
        Reset(f,1);
        seek(f,FileSize(f));
     end;
  BlockWrite(f,Buf^,len);
  Gauge1.Progress:=Gauge1.Progress+(len div 10);
  CloseFile(f);
  FreeMem(buf,len);
end;



Копирует, но на машине - приёмнике этот файл почему-то больше чуток чем файл-источник :-( Причём каждый раз разница в размерах разная. Сравнивал начала и окончания этих файлов визуально - одинаковые! Почему, где искать ошибку? Сравнил эти файлы: в файле - приёмнике обнаружены вставки неопределённой длины символов #0.


 
Digitman ©   (2004-07-14 13:58) [1]

вот тебе пища для размышления : ReceiveBuf() - это ф-ция, и она возвращает некий результат весьма важного характера


 
BJValentine   (2004-07-14 14:15) [2]

Спасибо, пища переварилась как следует!


 
BJValentine   (2004-07-15 10:39) [3]

А что нужно изменить на сервере, чтобы была возможность передавать данные блоками? Вдруг связь прервётся. Хочу, чтобы была возможность докачки.


 
False_Delirium ©   (2004-07-15 11:11) [4]

Посылать на сервер при возобновлении соединения кол-во принятых байт и требовать оставшиеся.:)


 
BJValentine   (2004-07-15 13:15) [5]

Дык это понятно и пегасу :-) Только как мне отправить данные с сервака с нужного места файла?


 
False_Delirium ©   (2004-07-15 13:58) [6]

В потоке позицию выставляешь, смещения от начала на кол-во прочитаных байт.



Страницы: 1 вся ветка

Текущий архив: 2004.09.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
4-1091703726
MakNik
2004-08-05 15:02
2004.09.19
Версия программы


8-1088505767
sashok
2004-06-29 14:42
2004.09.19
Проигрывание видео на форме.


1-1094564470
pavelgr
2004-09-07 17:41
2004.09.19
поиск строки


1-1093938194
Cosinus
2004-08-31 11:43
2004.09.19
Несколько вложенных try. Корректность использования.


14-1093525768
Копир
2004-08-26 17:09
2004.09.19
H E L P. Damned Javaw !