Главная страница
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.035 c
4-1091455570
kingdom
2004-08-02 18:06
2004.09.19
GDI vs DirectDraw


1-1093895732
d_oleg
2004-08-30 23:55
2004.09.19
Цвет TPanel под WinXP с включёнными visual styles


1-1094113972
ZemA
2004-09-02 12:32
2004.09.19
События происходят дважды. Это нормально?


3-1092988702
Janbolat
2004-08-20 11:58
2004.09.19
Скиньте линки про запросы, query если можно с чем их едят


6-1089545483
AlexeyM
2004-07-11 15:31
2004.09.19
как сформировать и послать сообщение к PHP на сайте