Форум программистов, компьютерный форум, киберфорум
Delphi: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 23.07.2018
Сообщений: 16
1
RAD XE3+

Ftp клиент , протокол общения клиента с сервером

19.05.2019, 13:49. Показов 1777. Ответов 13
Метки ftp, memo (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, нужна помощь , написал ftp клиент. Но необходимо что бы в окно memo выводилось лог общения клиента с сервером, подобно командной строки.
К примеру :
USER test
331 Password required for test.
PASS qwerty
230 User test logged in.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2019, 13:49
Ответы с готовыми решениями:

Обработать файл на стороне клиента, без общения с сервером?
Реально ли это сделать, пользователь выберет файл в браузере, так же на стороне клиента файл...

Протокол передачи файлов в сети и основные команды FTP-клиента
Можно ли из командной строки установить пассивный режим FTP, если по умолчанию был установлен...

Как создать свой протокол для общения в социальных сетях
Всем здрасте! Прошу вас помочь мне дать ссылку на тему или если её нет - дать мне совет :) Хотелось...

Какой сетевой протокол лучше всего использовать для общения 2 приложений
Какой сетевой протокол лучше всего использовать для общения 2 приложений, находящихся на 1...

13
884 / 404 / 174
Регистрация: 20.10.2016
Сообщений: 1,828
20.05.2019, 10:42 2
В чем у вас возникла проблема? Пока можно только роль психолога сыграть и спросить, что же беспокоит, потому что вы утаили самое важное, а именно каким образом у вас реализован ftp клиент. С помощью idFTP? Или на чистом WinApi + WinSockets? Или на idTCPClient? Или, может быть, с помощью TChromium или TWebBrowser?

Чувствуете, какое пространство для маневра вы оставили?
0
1 / 1 / 0
Регистрация: 23.07.2018
Сообщений: 16
20.05.2019, 14:17  [ТС] 3
Чувствую ,виноват!)
реализован на idFTP.
Находил такой код , но к сожалению ничего не выводит , комплилируется без ошибок .
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
procedure TForm2.FormCreate(Sender: TObject);
begin
 
  IdFTP1.Intercept := IdLogEvent1;
end;
 
procedure TForm2.PutToDebugLog(Operation, S1: String);
Var
  S: String;
begin
  while Length(S1) > 0 do
  begin
    if Pos(#13, S1) > 0 then
    begin
      S := Copy(S1, 1, Pos(#13, S1) - 1);
      Delete(S1, 1, Pos(#13, S1));
      if S1[1] = #10 then
        Delete(S1, 1, 1);
    end
    else
      S := S1;
 
    Memo1.Lines.Add(Operation + S)
  end;
end;
 
procedure TForm2.IdLogEvent1Received(ASender: TComponent;
  const AText, AData: String);
begin
  PutToDebugLog('<<- ', AData);
end;
 
procedure TForm2.IdLogEvent1Sent(ASender: TComponent;
  const AText, AData: String);
begin
  PutToDebugLog('->> ', AData);
end;
0
884 / 404 / 174
Регистрация: 20.10.2016
Сообщений: 1,828
20.05.2019, 15:42 4
А если внутри PutToDebugLog расставить брейкпоинты и посмотреть что вообще в неё приходит?
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
20.05.2019, 22:16 5
Цитата Сообщение от bachateros Посмотреть сообщение
написал ftp клиент
Цитата Сообщение от bachateros Посмотреть сообщение
реализован на idFTP
чую кто-то где-то врет, но понять не могу
0
884 / 404 / 174
Регистрация: 20.10.2016
Сообщений: 1,828
21.05.2019, 04:22 6
Ну и еще дополнительные вопросы: заданы ли свойства FileName у файла? Выставлено ли Active в true?
0
1 / 1 / 0
Регистрация: 23.07.2018
Сообщений: 16
21.05.2019, 15:17  [ТС] 7
Nanotentacle, Брейкпоинты выставлял , но PutToDebugLog просто не вызывается... Тот код который я скинул выше это и есть все что я смог найти ... IdFTP и окно диалога запрос-ответ вот здесь шло обсуждение по схожей теме , но что именно нужно сделать я так и не понял.. нашел код на просторах интернета , пытался пристроить под свои нужны, невышло ...
Цитата Сообщение от Nanotentacle Посмотреть сообщение
еще дополнительные вопросы: заданы ли свойства FileName у файла? Выставлено ли Active в true?
Delphi
1
2
3
4
5
6
7
8
procedure TForm2.FormCreate(Sender: TObject);
begin
 
  IdFTP1.Intercept := IdLogEvent1;
  idlogevent1.Active:=true;
  idlogevent1.ReplaceCRLF:=false;
  idLogEvent1.LogTime:=false;
end;
пытался выставлять таким образом , но выводит ошибку First chance exception at $0063C7BC. Exception class $C0000005 with message 'access violation at 0x0063c7bc: read of address 0x00000000'. Process Project2.exe (3860)
0
884 / 404 / 174
Регистрация: 20.10.2016
Сообщений: 1,828
22.05.2019, 04:02 8
Ну вообще эта ошибка обычно гласит о том, что была попытка обратиться к несуществующему объекту.

Можете выложить проект, я гляну что там и как. Так будет быстрее.
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
22.05.2019, 08:03 9
можно даже не проект, а просто убрать из FormCreate весь код и повесить на кнопку
0
1 / 1 / 0
Регистрация: 23.07.2018
Сообщений: 16
22.05.2019, 14:05  [ТС] 10
Вот проект
Вложения
Тип файла: rar FtpClient.rar (869.5 Кб, 9 просмотров)
0
884 / 404 / 174
Регистрация: 20.10.2016
Сообщений: 1,828
23.05.2019, 06:02 11
Ну смотрите, многое становится понятным. Давайте последовательно:
Delphi
1
2
3
var
  Form2: TForm2;
  IdLogEvent1: TIdLogEvent;
Объявление я вижу. Оно, конечно, некорректно, потому что в вашем случае надо зайти во вкладку Indy Intercepts и просто добавить idLogEvent на форму, после чего переделать все действия на него и все заработает. Либо добавить его как поле вашего класса Form2. Тем не менее, я не вижу, где вы этот idLogEvent1 инициализируете. Если же вам все же хочется работать с глобальными переменными, то надо сделать вот так:
Delphi
1
2
3
4
5
6
7
8
procedure TForm2.FormCreate(Sender: TObject);
begin
  idLogEvent1 := idLogEvent.create(nil); //у меня в IDE косяки, поэтому у конструктора могут быть другие параметры
  IdFTP1.Intercept := IdLogEvent1;
  idlogevent1.Active:=true;
  idlogevent1.ReplaceCRLF:=false;
  idLogEvent1.LogTime:=false;
end;
Но я бы рекомендовал работать через добавление компонента на форму и задание всех нужных полей через инспектор объектов. А то половина программы у вас выполнена в одном стиле, а другая половина - в другом.

Не по теме:

Как будто сам клиент писал один человек, а добавляли лог вы сами...

1
1 / 1 / 0
Регистрация: 23.07.2018
Сообщений: 16
23.05.2019, 15:02  [ТС] 12
Nanotentacle,
Цитата Сообщение от Nanotentacle Посмотреть сообщение
Но я бы рекомендовал работать через добавление компонента на форму и задание всех нужных полей через инспектор объектов.
Отличная идея, нашел эту вкладку, не знал о ней, могли бы вы расписать как передать действия ?
через TForm2.IdLogEvent1Connect ?
Цитата Сообщение от Nanotentacle Посмотреть сообщение
Как будто сам клиент писал один человек, а добавляли лог вы сами...
тут совсем наоборот, одной из задач было выведение лога, а у меня и не было идей как это можно реализовать ...
0
884 / 404 / 174
Регистрация: 20.10.2016
Сообщений: 1,828
24.05.2019, 04:06 13
Лучший ответ Сообщение было отмечено bachateros как решение

Решение

Цитата Сообщение от bachateros Посмотреть сообщение
Отличная идея, нашел эту вкладку, не знал о ней, могли бы вы расписать как передать действия ?
1) Добавляем idLogEvent на форму
2) Выбираем на форме idFTP1
3) В инспекторе объектов задаем Intercept: выбираем idLogEvent1 (см. скриншот)
4) Выбираем на форме idLogEvent1
5) В инспекторе объектов задаем свойства: Active в true, ReplaceCRLF в false, LogTime в false.
6) Удаляем все из OnCreate, теперь этот код не нужен
7) Запускаем
Изображения
  
1
1 / 1 / 0
Регистрация: 23.07.2018
Сообщений: 16
25.05.2019, 10:11  [ТС] 14
Nanotentacle, Спасибо большое за помощь, все заработало как надо!
0
25.05.2019, 10:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.05.2019, 10:11
Помогаю со студенческими работами здесь

Создание формы. Клиента для общения
Здравствуйте Уважаемые. Сделал сервер и клиент на сокетах. Все сообщения доходят, все хорошо....

Можно ли написать своего клиента для общения ВКонтакте
Есть много разных способов общаться в соц.сетях. Мне нужен именно ВКонтакте. Можно ли как нибудь...

Узнать название api\ протокола\ способа\ метода общения клиента и сервера
Нужно узнать название api\протокола\способа\метода общения клиента и сервера. Есть одно приложение...

При подключении клиента к серверу, подключается еще один клиент (фантом) завязанный на этого же клиента
Проблема появляется раз через раз с первого подключения клиентов, но после третьего и далее -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru