Создание простого FTP-клиента
В этой главе будет написана программа, которая может считывать файлы из Internet по FTP протоколу и записывать их на диск.
Для связи с Internet в Visual C++ существует так называемый WinInet Class. В него входят несколько подклассов.
Далее представлены ксассы WinInet:
Классы | Описание |
CInternetSession | Создаёт Internet сессию. Все MFC WinInet приложения должны создавать CInternetSession объект перед использрванием других WinInet классов. |
CInternetConnection | Создаёт коннект с Internet. Это базовый класс для классов CFtpConnection, CGopherConnection, и |
CFtpConnection | Устанавливает соединение по FTP протоколу. |
CGopherConnection | Создаёт Gopher коннект. |
CHttpConnection | Устанавливает соединение по HTTP протоколу. |
CInternetFile | Разрешает удалённый доступ к файлам на Internet серверах. Это базовый класс для классов |
CGopherFile | Разрешает удалённый доступ к файлам на Gopher серверах. |
CHttpFile | Разрешает удалённый доступ к файлам на HTTP серверах. |
CFileFind | Разрешает поиск файлов в Internet. Это базовый класс для классов |
CFtpFileFind | Разрешает поиск файлов на FTP серверах. |
CGopherFileFind | Разрешает поиск файлов на Gopher серверах. |
CGopherLocator | Отыскивает Gopher устройство ввода позиций от gopher сервера. |
CInternetException | Управляет исключениями, сгенерированными WinInet классом. |
Функции | Описание |
Close() | Закрывает Internet сессию. |
EnableStatusCallback() | Разрешает использование функции повторного вызова, которая используется для асинхронных действий. |
GetContext() | Получает значение контекста Internet сессии. |
GetFtpConnection() | Устанавливает подключение по FTP протоколу. |
GetGopherConnection() | Устанавливает подключение с Gopher серверами. |
GetHttpConnection() | Устанавливает подключение по HTTP протоклолу. |
OnStatusCallback() | Модифицирует состояние операции. |
OpenURL() | Соединяется с данным URL. |
QueryOption() | Сервис проверки ошибки провайдера. |
ServiceTypeFromHandle() | Получает тип сервиса от Internet дескриптора. |
SetOption() | Устанавливает опции Internet сессии. | <
Функции | Описание |
BOOL SetCurrentDirectory( LPCTSTR pstrDirName ) | Устанавливает текущую FTP директорию. |
BOOL GetCurrentDirectory( CString& strDirName ) const | Записывает в strDirName текущую FTP директорию . |
BOOL RemoveDirectory( LPCTSTR pstrDirName ) | Удаляет директорию на сервере. |
BOOL CreateDirectory( LPCTSTR pstrDirName ) | Создаёт директорию на сервере. |
BOOL Rename( LPCTSTR pstrExisting, LPCTSTR pstrNew ) | Переименовывает файл на сервере. |
BOOL Remove( LPCTSTR pstrFileName ) | Удаляет файл на сервере. |
BOOL PutFile( LPCTSTR pstrLocalFile, LPCTSTR pstrRemoteFile, DWORD dwFlags = FTP_TRANSFER_TYPE_BINARY, DWORD dwContext = 1 ) | Кладёт локальный файл на сервер. |
BOOL GetFile( LPCTSTR pstrRemoteFile, LPCTSTR pstrLocalFile, BOOL bFailIfExists = TRUE, DWORD dwAttributes = FILE_ATTRIBUTE_NORMAL, DWORD dwFlags = FTP_TRANSFER_TYPE_BINARY, DWORD dwContext = 1 ) | Записывает файл с сервера на локальный диск. |
CInternetFile* OpenFile( LPCTSTR pstrFileName, DWORD dwAccess = GENERIC_READ, DWORD dwFlags = FTP_TRANSFER_TYPE_BINARY, DWORD dwContext = 1 ) | Открывает файл по FTP протоколу. |
virtual void Close( ) | Закрывает коннект с FTP сервером. | Методы ( функции ) класса CFtpFileFind
Функции | Описание |
virtual BOOL FindFile( LPCTSTR pstrName = NULL, DWORD dwFlags = INTERNET_FLAG_RELOAD ) | Включает функцию поиска файла, если pstrName = NULL, то ишет все файлы(*.*) . |
virtual BOOL FindNextFile( ) | Ишет следующий файл. До вызова этой функции должна быть вызвана ф-я FindFile() |
CString GetFileURL( ) const | Возвращает URL найденного файла. |
CString GetFileName( VOID ) | Возвращает имя файла. |
unsigned long GetLength( VOID ) const | Возвращает длину файла. | Далее напишем код программы и разберём каждую строчку: