Парижский Сергей Михайлович
Шрифт:
⊚ Все файлы проекта и исполняемый файл рассмотренной программы находятся на прилагаемом к книге компакт-диске в папке Chapter 17.
Глава 18
FTP-клиент
Постановка задачи
Разработать FTP-клиент. Программа должна соединяться с FTP-cepвером, проходить аутентификацию и предоставлять пользователю возможность работать с файлами, которые находятся на сервере. У пользователя должна быть возможность передавать и получать файлы, создавать и удалять каталоги и т.п. Также пользователь может выполнять свои собственные команды на сервере.
Разработка формы
Создайте новый проект Delphi. Приготовьтесь к тому, что форма получится довольно большой (ширина — около 800 пикселей) и будет содержать большое количество разных кнопок и полей ввода. Присвойте ей заголовок FTP-client (свойство Caption) и разместите компоненты согласно табл. 18.1.
Таблица 18.1. Свойства формы FTP-клиента
| Компонент | Свойство | Значение | Пояснение |
|---|---|---|---|
| Label1 (категория Standard) | Caption | FTP-сервер | Надпись метки |
| Left | 56 | Отступ слева | |
| Top | 16 | Отступ сверху | |
| Label2 | Caption | Имя пользователя | Надпись метки |
| Left | 16 | Отступ слева | |
| Top | 48 | Отступ сверху | |
| Label3 | Caption | Пароль | Надпись метки |
| Left | 72 | Отступ слева | |
| Top | 80 | Отступ сверху | |
| Edit1 (категория Standard) | Name | ftpserver | Новое имя компонента |
| Text | ftp.narod.ru | Адрес FTP-сервера | |
| Left | 120 | Отступ слева | |
| Top | 8 | Отступ сверху | |
| Edit2 | Name | name | Новое имя компонента |
| Text | test6001 | Имя пользователя | |
| Left | 120 | Отступ слева | |
| Top | 40 | Отступ сверху | |
| Edit3 | Name | pass | Новое имя компонента |
| Left | 120 | Отступ слева | |
| Top | 72 | Отступ сверху | |
| Edit4 | Name | port | Новое имя компонента |
| Text | 21 | Имя пользователя | |
| Left | 120 | Отступ слева | |
| Top | 104 | Отступ сверху | |
| Edit5 | Name | del | Новое имя компонента |
| Left | 512 | Отступ слева | |
| Top | 8 | Отступ сверху | |
| Edit6 | Name | cd | Новое имя компонента |
| Left | 512 | Отступ слева | |
| Top | 40 | Отступ сверху | |
| Edit7 | Name | cmd | Новое имя компонента |
| Left | 512 | Отступ слева | |
| Top | 72 | Отступ сверху | |
| Edit8 | Name | md | Новое имя компонента |
| Left | 512 | Отступ слева | |
| Top | 104 | Отступ сверху | |
| Edit9 | Name | rd | Новое имя компонента |
| Left | 512 | Отступ слева | |
| Top | 136 | Отступ сверху | |
| Edit10 | Name | download | Новое имя компонента |
| Left | 512 | Отступ слева | |
| Top | 168 | Отступ сверху | |
| Button1 (категория Standard) | Caption | Подключиться | Надпись на кнопке |
| Left | 8 | Отступ слева | |
| Top | 144 | Отступ сверху | |
| Button2 | Caption | Отключиться | Надпись на кнопке |
| Left | 123 | Отступ слева | |
| Top | 144 | Отступ сверху | |
| Button3 | Caption | Загрузить файл на сервер | Надпись на кнопке |
| Left | 512 | Отступ слева | |
| Top | 200 | Отступ сверху | |
| Button4 | Caption | Удалить | Надпись на кнопке |
| Left | 672 | Отступ слева | |
| Top | 8 | Отступ сверху | |
| Button5 | Caption | Изменить каталог | Надпись на кнопке |
| Left | 672 | Отступ слева | |
| Top | 40 | Отступ сверху | |
| Button6 | Caption | Выполнить команду | Надпись на кнопке |
| Left | 672 | Отступ слева | |
| Top | 72 | Отступ сверху | |
| Button7 | Caption | Создать каталог | Надпись на кнопке |
| Left | 672 | Отступ слева | |
| Top | 104 | Отступ сверху | |
| Button8 | Caption | Удалить каталог | Надпись на кнопке |
| Left | 672 | Отступ слева | |
| Top | 136 | Отступ сверху | |
| Button9 | Caption | Скачать файл | Надпись на кнопке |
| Left | 672 | Отступ слева | |
| Top | 168 | Отступ сверху | |
| Memo (категория Standard) | Name | status1 | Новое имя компонента, предназначенного для отображения состояния соединения |
| Lines | Статус: | Текст в поле | |
| Left | 264 | Отступ слева | |
| Top | 8 | Отступ сверху | |
| Height | 217 | Высота | |
| Width | 233 | Ширина | |
| OpenDialog (категория Dialogs) | Name | Open1 | Новое имя компонента, который будет использоваться для открытия файлов |
| SaveDialog (категория Dialogs) | Name | Save1 | Новое имя компонента, который будет использоваться для сохранения файлов |
| NMFTP (категория FastNet) | Name | ftp | Новое имя главного компонента программы |
Полученная форма должна соответствовать рис. 18.1.
Рис. 18.1. Форма FTP-клиента
Разработка программного кода
Обработаем нажатия кнопок соединения и отключения от сервера. Обработчик события OnClick для кнопки Подключиться:
Здесь мы считываем все данные, которые необходимы для соединения с сервером. После этого мы пытаемся соединиться с сервером. Об успешности этой операции можно будет узнать в поле состояния.
Обработаем нажатие кнопки Отключиться:
Если при нажатии кнопки Отключиться установлено соединение с сервером, то мы разрываем его.
Теперь обработаем нажатие кнопок, которые служат для работы с сервером. Обработчик события OnClick для кнопки Удалить:
Здесь мы удаляем файл, имя которого пользователь ввел в поле рядом с кнопкой.
Обработаем нажатие кнопки Изменить каталог: