Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.034 c
14-1094020963
Ozone
2004-09-01 10:42
2004.09.19
Вот собрался брать авто...


8-1087798849
Korneley
2004-06-21 10:20
2004.09.19
Нужен пример захвата видео


1-1094281938
Андрей.Н
2004-09-04 11:12
2004.09.19
Ошибка при загрузке файлов проекта D6.


3-1092991353
Tormoz
2004-08-20 12:42
2004.09.19
В Oracle есть тип данных INTEGER ?


3-1093119022
Страдалец
2004-08-22 00:10
2004.09.19
через ADO вставить в базу MS Access ссылку (hyperlink)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский