Текущий архив: 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.45 MB
Время: 0.026 c