Главная страница
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.025 c
14-1094077026
gn
2004-09-02 02:17
2004.09.19
Я даже не знаю как понимать таких людей


1-1094228945
heady
2004-09-03 20:29
2004.09.19
"создать директорию" в диалоге выбора каталогов


4-1091703726
MakNik
2004-08-05 15:02
2004.09.19
Версия программы


1-1094146266
UserUserov
2004-09-02 21:31
2004.09.19
Функции


6-1089773136
RaPToR_1
2004-07-14 06:45
2004.09.19
ошибки в Tclientsocket