Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FTP и Передача файла 
V
    Опции темы
Угрюмый
Дата 23.9.2008, 06:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 11.4.2008

Репутация: нет
Всего: нет



Столкнулся с проблемой при написании функционалдности FTP-клиента в программе. Понадобилось написать, так как нужно было взаимодейтсвие с HTTP-прокси.

Наследую от TIdTCPConnection. Вроде все нормально. И коннектится и получает список файлов ... Но при отправке данных на ftp получается файл с двумя лишними байтами впереди (#10#13). Никак не могу понять, почему. Модет кто подскажет?

Приведу косок кода, ответственного за отправку файла.

Код

  Procedure PutData (AItem : T_Item; AFile : string);
  var
    l_Str : string;
    l_SourceStream: TFileStream;
    l_Stream: TIdStreamVCL;
    i : integer;
    l_Byte : TIdBytes;
  begin

    IdTCP_2.Connect;

    IdTCP_2.SendCmd('CONNECT 217.116.145.206:'+IntToStr(l_AnswerPort)+' HTTP/1.0'+
      CRLF+'Proxy-authorization: Basic '+l_UserPass+CRLF+CRLF, 200);
    IdTCP_2.IOHandler.ReadLn; 

    IdTCP_1.SendCmd('CWD '+AItem.OPS+CRLF, [250]);

    l_SourceStream := TFileStream.Create(AFile, fmOpenRead or fmShareDenyNone);
    try
      l_Stream := TIdStreamVCL.Create(l_SourceStream);

      IdTCP_1.SendCmd('STOR '+ExtractFileName(AFile), [150]);


//      IdTCP_2.IOHandler.WriteFile(AFile); 

      IdTCP_2.IOHandler.Write(l_Stream);
    finally
      FreeAndNil(l_Stream);
      FreeAndNil(l_SourceStream);
    end;

    IdTCP_2.Disconnect;

    ProgressBar.StepIt;
    Application.ProcessMessages;

  end;



Даже если ничего не отправлять во второй сокет (IdTCP_2), то создается файл с двумя байтами - #10#13.
PM MAIL   Вверх
Угрюмый
Дата 23.9.2008, 07:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 11.4.2008

Репутация: нет
Всего: нет



Дело в проксе ... похоже. Ибо меняю другой прокси (прозрачный), в принципе ничего переписывать не нужно, лишь ip-адрес поменял в настройках - и все рнормально - размер файла такой какой нужен, ничего лишнего.

Проксятники отличаются тем, что первый HTTP со squid'ом, а второй прозрачный с UserGate'ом. Может при подключении к проксятнику нужно что-то прописывать, дабы он отсебятину не пихал при передачи данных на ftp? Причем пихает в начало и только два байта. Пробовал по символьно передовать поток ... передался вместе с лишними двумя байтами в начале файла.  smile 

Помогите ...  smile 

Да ... и еще, к примеру, Totol Commander'у плевать с каким прокси работать, он все делает как надо. Значит это все-таки я с данным проксятником общаюсь не правильно ... ждет он от меня наверно что-то.  smile 

Это сообщение отредактировал(а) Угрюмый - 23.9.2008, 07:09
PM MAIL   Вверх
Угрюмый
Дата 23.9.2008, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 11.4.2008

Репутация: нет
Всего: нет



Если кому интересно, то фишка в подключении.

Для первого (IdTCP_1), которого потом переводим в пассивный режим нужно чтобы в строке подключения была пустая строка.

IdTCP_1.SendCmd('CONNECT 217.116.145.206:'+IntToStr(l_AnswerPort)+' HTTP/1.0'+
      CRLF+'Proxy-authorization: Basic '+l_UserPass+CRLF+CRLF, 200);

А у второго (IdTCP_2), через который мы передаем файл

IdTCP_2.SendCmd('CONNECT 217.116.145.206:'+IntToStr(l_AnswerPort)+' HTTP/1.0'+
      CRLF+'Proxy-authorization: Basic '+l_UserPass+CRLF, 200);

Не нужна.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0388 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.