Клиент FTP с использованием WININET.
Компилятор: Visual C++
Автор: Pablo van der Meer
Описание
В этой статье представлен многопотоковый
клиент FTP, который включает в себя все
возможности Проводника Windows, позволяя перемещать
и копировать файлы как на локальном компьютере.
Для реализации протокола FTP используются API
функции.
Список возможностей
- Вся запросы выполняются в фоновом режиме,
поэтому нет необходимости ждать завершения
копирования файлов. Вы можете даже соединиться с
другим сервером, пока идёт процесс копирования.
- Менеджер передачи показывает прогресс
копирования файлов, а так же файлы находящие в
очереди.
- Клиент FTP использует Windows 9x/NT/XP стиль листбоксов
для отображения содержимого удалённого сервера,
а так же системные иконки и меню.
- Можно указать количество попыток
законнектиться, а так же интервал между
попытками соединения с сервером.
- Полная поддержка Drag-and-Drop. Можно перетаскивать
один или несколько файлов и даже целые папки.
- Простое конфигурирование сайта FTP: имя
пользователя, пароль, порт, начальная директория
на сервере, количество попыток и папка для
скачивания поумолчнию.
Ниже следует краткое описание наиболее важных
классов приложения:
CMainFrame
CMainFrame содержит основную часть кода по
управлению соединением FTP. Он следит за
соединением с сервером, началом закачки/скачивания,
а так же обрабатывает другие, связанные с FTP
действия.
CFTPListView
Это всего лишь наследованный от CListView класс,
который следит за отображением файлов и
позволяет сортировать их. Когда приложение
занято закачиванием списка директорий, то этот
класс отображает анимационную иконку наподобие
Проводника.
CConnectDlg
Этот класс (Менеджер сайтов) позволяет
пользователю управлять FTP сайтами. Вы можете
добавлять/изменять и удалять сайты, а также
настраивать такие свойства как адрес сервера,
порт, имя пользователя и пароль. Настройки
каждого сайта сохраняются на диск при помощи
сериализации.
CTransferManagerDlg
CTransferManagerDlg (= Менеджер передачи) следит за
очередью передачи файлов. Он показывает текущую
передачу всех файлов, а так же файлы находящиеся
в очереди. Можно настроить количество
одновременно загружаемых файлов, чтобы не
расходовать слишком много ресурсов системы.
Каждое закачивание/скачивание обрабатывается
отдельным потоком при помощи классов CDownloadThread
или CUploadThread.
CDownloadThread
CDownloadThread создаёт новое соединение с FTP сервером
и отображает диалог прогресса, в котором
показывается состояние передачи файла. Когда
скачивание завершено (или прервано), класс
уведомляет менеджер передачи, чтобы тот обновил
пользовательский интерфейс.
CUploadThread
CUploadThread создаёт новое соединение с FTP сервером и
отображает диалог прогресса, в котором
показывается состояние передачи файла. Когда
закачивание завершено (или прервано), класс
уведомляет менеджер передачи, чтобы тот обновил
пользовательский интерфейс.
Downloads
Скачать демонстрационный пример
- 105 Kb
Скачать исходник - 152 Kb
|