Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Форум .::NoWa.cc::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > Delphi

Уважаемые пользователи nowa.cc. Мы работаем для вас более 20 лет и сейчас вынуждены просить о финансовой помощи по оплате за сервер.
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: Z021474945171 Webmoney WME: E159284508897 Webmoney WMUSDT: T206853643180
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!

Ответ
 
Опции темы Опции просмотра Language
Старый 30.12.2007, 02:09   #1
Неактивный пользователь
 
Регистрация: 08.08.2007
Сообщений: 2
Репутация: 0
Exclamation Обмен файлами через TCP протокол

Помогите разобраться и сделать что-то подобное:

http://www.delphisources.ru/pages/fa...send_data.html

Как мне переделать пример под протокол TCP, желательно с помощью TIdTCPServer и TIdTCPClient!

Заранее СПАСИБО!!!
XStreaM вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: большие букеты цветовфранцузский поцелуй фильм скачатьМагазин бытовой техники: hartens телевизор - переходи на сайт ТАЙМТВ!концерт басты в питере 2026 - redkassa.ruкарточки с озона перенести на авито


Старый 02.01.2008, 17:18   #2
Testudo
Новичок
 
Пол:Мужской
Регистрация: 21.07.2007
Сообщений: 8
Репутация: 2
По умолчанию Ответ: Обмен файлами через TCP протокол

Оба этих компонента умеют посылать потоки (stream). Все что нужно, это создать TFileStream от нужного файла, и отправить созданный поток.
С другой стороны примерно так же - создается файловый поток (на новый файл), и в него принимаются данные.
Testudo вне форума
 
Ответить с цитированием Вверх
Старый 08.01.2008, 17:15   #3
XStreaM
Неактивный пользователь
 
Регистрация: 08.08.2007
Сообщений: 2
Репутация: 0
Unhappy Ответ: Обмен файлами через TCP протокол

Да я это знаю, в принципе я так и хочу.
У меня получилось только на TClientSocket и TServerSocket
  1. Сервер создает поток TFileStream.Create('c:\1.avi', fmOpenRead or fmShareDenyWrite);
  2. Клиент отправляет сообщение о готовности принять файл
  3. Сервер отравляет «Заголовок» (Кодовое слово, Имя файла, Размер файла)
  4. Клиент создает файл у себя TFileStream.Create(SaveDialog1.FileName, fmCreate or fmShareDenyWrite);
  5. Сервер пакетами отправляет файловый поток [для того чтобы видеть в TGauge сколько было передано и осталось я изменил функцию TCustomWinSocket.SendStreamPiece под себя]
  6. Клиенту проще [знаем размер файла и сколько байт передано в буфере] каждое сообщение обрабатывает OnRead, просто напросто дописываем в конец файлового потока и отображаем в TGauge.

Как уловить это в упомянутые TIdTCPServer и TIdTCPClient не знаю. SOS!!! Очень нужно...
XStreaM вне форума
 
Ответить с цитированием Вверх
Старый 11.01.2008, 10:31   #4
phat
Новичок
 
Пол:Мужской
Регистрация: 11.04.2007
Сообщений: 11
Репутация: 0
По умолчанию Ответ: Обмен файлами через TCP протокол

Клиент:
Код:
     assignfile(f,extractfilename(a));
     rewrite(f);

        siz:= strtoint(form1.tcp.ReadLn(''));
        form1.tcp.ReadBuffer(buff,siz);
        blockwrite(f,buff,siz);
        inc(currblk);
     while siz=8192 do begin
        siz:= strtoint(form1.tcp.ReadLn(''));
        form1.tcp.ReadBuffer(buff,siz);
        inc(currblk);
        blockwrite(f,buff,siz);
        if round((currblk / blocks)*100)<>cents then begin
          form1.conO.Lines[form1.conO.Lines.Count-1]:=inttostr(cents)+' % Completed';
          cents:=round((currblk / blocks)*100);
        end;
        application.ProcessMessages;
     end;
     closefile(f);
     form1.conO.Lines.Add('Transfer complete!!!');
Сервер:
Код:
    AssignFile(F, path);
    {$I-}
    Reset(F);
    {$I+}
    if IOResult = 0 then
    begin
       Sock.sendstring('Starting transfer...'#13#10);
       sock.SendString(inttostr(filesize(f)div 8192)+#13#10);
       numreaded:=8192;
       while numreaded=8192 do begin
         Blockread(f, Buff, 8192, NumReaded);
         sock.SendString(inttostr(numreaded)+#13#10);
         sock.SendBuffer(@buff,numreaded);
       end;
      CloseFile(F);
    end else   Sock.sendstring('File '+path+' not found!'#13#10);
phat вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обмен файлами по интернету. Что лучше использовать? Mironico Delphi 15 02.08.2010 00:01
BitJUMPer - обмен файлами по сети s2dentm Интернет и Сети 0 11.08.2009 19:44
Действия с файлами через базу данных Nensi Базы данных 2 11.04.2008 12:54

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 15:09. Часовой пояс GMT +3.


Copyright ©2004 - 2026 NoWa.cc

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.04481 секунды с 11 запросами