Главная » Статьи » Мои статьи |
FTP Сервер.
В этой статье представлен многопотоковый полнофункциональный FTP сервер. Сервер понимает все основные команды FTP, поддерживает авторизацию пользователей и виртуальные директории. Ниже представлены основные классы приложения: CFTPServerЭтот класс фактически является самим FTP сервером и управляет остальными классами, необходимыми для работы сервера. CFTPServer является частью диалогового приложения и не имеет пользовательского интерфейса, поэтому может быть легко использован как сервис или консольное приложение. Методы:
CFTPEventSinkЭтот класс используется для того, чтобы сделать возможным "посылку" событий из класса CFTPServer в главное приложение. CFTPEventSink это всего лишь вспомогательный класс, который не содержит ничего кроме виртуальных функций. CFTPServer ссылается на этот класс и вызывает эти виртуальные функции, когда ему необходимо уведомить приложение. Доступны следующие события:
Все остальные классы, это всего лишь настройки для пользовательского интерфейса. Использование класса CFTPServerДля использования класса в своём приложение, необходимо проделать следующее: 1. Добавить класс в приложение 2. Наследовать свой главный класс от CFTPEventSink 3. Переопределить виртуальные функции в CFTPEventSink; это события, которые будут поступать от сервера. 4. Инициализировать приёмник событий 5. Запустить сервер. class CMyDlg : public CDialog, CFTPEventSink { ... CFTPServer m_FTPSERVER; virtual void OnFTPUserConnected(DWORD nThreadID, LPCTSTR lpszUser, LPCSTR lpszAddress); virtual void OnFTPUserDisconnected(DWORD nThreadID, LPCTSTR lpszUser); virtual void OnFTPStatusChange(int nType, LPCTSTR lpszText); virtual void OnFTPReceivedBytesChange(int nBytes); virtual void OnFTPSentBytesChange(int nBytes); virtual void OnFTPStatisticChange(int nType, int nValue); ... } BOOL CMyDlg::OnInitDialog() { CDialog::OnInitDialog(); ... // инициализирует приёмник событий m_FTPSERVER.Initialize(this); // устанавливаем максимальное количество пользователей в 10 m_FTPSERVER.SetMaxUsers(10); // разрешаем новые соединения на 21-ом порту m_FTPSERVER.SetPort(21); // активируем сервер m_FTPSERVER.Start(); return TRUE; }
| |||||||||||||||||||||||||||||||||||||||||||||||||||||
Просмотров: 1981 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |
Меню сайта |
Категории раздела | |
|
Наш опрос |
Статистика |
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
Жизнь сайта |
Добавь! |
Поиск |
Друзья и рейтинги |