1.2 Описание метода void Cpop3ClientDlg::OnBnClickedButton1()

Метод содержит следующие локальные переменные:

pop3Socket *pSocket – указатель на объект класса pop3Socket;

Cstring ip – строка типа Cstring, предназначенная для зранения ip адреса сервера

int port – целочисленная переменная для хранения номера порта сервера;

CString messtr – строка для хранения сформированного сообщения ответа клиента

CString pswd – строка для хранения паролья прользователя;

CString login – строка для хранения имени пользователя;

char * buf = new char [128] – массив для хранения принятов строки от сервера;

char fl=0 – переменная для анализа ответа сервера;

char * stamp = new char[64] – строка для хранения временной метки сервера.

Метод вызывается при нажатии пользователем на кнопку соединения с сервером. Подразумевается, что на момент нажатия кнопки, пользователь ввел все необходимые для функционирования программы данные, как то: имя, пароль, адрес, номер порта, тип аутентификации. Наличие полноты ввода этих данных проверяется программой и, в случае, если какие-либо из них отсутствуют, программа выдает сообщение об ошибке в виде окна AfxMessageBox.

Как только данный метод вызывается, происходит считывание введенных данных в переменные с помощью функции GetDlgItemText. Параметрами данной функции являются идентификатор элемента управления из которого считывается строка и переменная, в котороую данные считываются.

GetDlgItemText(IDC_EDIT1,ip); - из строки ввода в переменную ip

GetDlgItemText(IDC_EDIT2,login); - из строки ввода имени пользователя в переменную login;

port = atoi(login); - с помощью функции atoi строка login преобразуется в целочисленное значение и присваивается переменной port.

GetDlgItemText(IDC_EDIT3,login); - из строки ввода имени в строку login

GetDlgItemText(IDC_EDIT4,pswd); - из строки ввода пароля в строку pswd.

После этого производится проверка того, что был выбран тип аутентификации, если ни один из типов аутентификации выбран не был, то происходит вызов диалогового окна с сообщением об ошибке.

Если проверка проёдена успешно, происходит создание сокета pSocket=new pop3Socket(this), и его инициализация pSocket->Create().

Далее функционирование программы осуществляется в зависимости от выбранного типа аутентификации. Для этого производится анализ переменных simple, apop и auth.

1.3  Простая аутентификачия

1.         Осуществляется соединение с сервером с помощью вызова методоа сокета pSocet: pSocket->Connect(ip,port), где в качестве параметров передаются строка, содержащая адрес сервера и номер порта Если соединение не установлено по каким-либо причинам, то производится вызов окна ошибки и завершение программы.

2.         Ожидание и получение строки ответа от сервера в массив и buf с помощью вызова метода сокета pSocet->Receive(buf,0). В случае, если данные не были получены этот метод возвращает отрицательное число, в противном случае возвращает количество полученных байт. Количество байт, полученных от сервера присваивается переменной int recived.

3.         Производится форматирование с помощью метода строки messtr.Format() строки messtr messtr.Format("S: %s",buf). Этот метод добавляет в начало строки символ последовательность “S: ” и далее содеримое массива buf.

4.         Производится ывод строки messtr в ListBox с помощью вызова метода Protocol->Add(messtr).

5.         В цикле от 0 до 127 элемента производится обнуление массива buf

6.         С помощью вызова метода EnableWindow объекта disconect_btn с true в качестве параметра производится установка окна кнопки разрыва соединения с сервером в активное сотояние.

7.         С помощью вызова метода EnableWindow объекта conect_btn с false в качестве параметра производится установка окна кнопки соединения с сервером в неактивное стостояние.

8.         Если от сервера получен положительный ответ (проверяется по значению переменной fl: если она имеет значение «+», то ответ положителен, если «-», то отрицателен), тогда производится отправка ему строки с командой USER:

«pSocket->Send("USER " + login + "\n\r",strlen("USER ")+strlen(login) + strlen("\n\r"),1)», если нет, то осуществляется переход к пункту 14

9.         Повторить 2-7

10.       Повторить п 8-9 (с командой PASS: pSocket->Send("PASS " + pswd + "\n\r",strlen("PASS ")+strlen(pswd)+strlen("\n\r"),0))

11.      Повторить п 8-9 с командой STAT:

 pSocket->Send("STAT\n\r",strlen("STAT\n\r"),0)

12.      Послать серверу команду QUIT:

 pSocket->Send("QUIT\n\r",strlen("QUIT\n\r"),0)


1.4 APOP аутентификация

1.         Производится объявление объекта md5Capi класса Cmd5Capi. Этот объект осуществляет вычисление хэш-функции MD5. Объявление переменных – CString out,in,test; int start,end;

2.         Если соединение с сервером установлено то 3, инчае вывод окна ошибки:

3.         Установка окна кнопки соединения с сервером в неактивное сотояние

4.         Устанвка окна кнопки разрыва соединения в активное стостояние

5.         Получение строки ответа от сервера в массив и buf. Количество байт, полученных от сервера присваивается переменной int recived.

6.         Формирование с помощью метода строки messtr.Forma() строки messtr messtr.Format("S: %s",buf)

7.         Поиск в полученной от сервера строки приветствия уникальной метки.

8.         Вывод строки messtr в ListBox.

9.         Обнуление массива buf

10.      Если от сервера получен положительный ответ, то 11, иначе 14

11.      Вычисление MD5 хэша от строки вида: метка_сервера+пароль

12.      Отправка серверу команды APOP:

out="APOP " + login + " " + md5Capi.Digest(in)+"\n\r";

pSocket->Send(out,out.GetLength(),0)

13.      Если получен положительный ответ, то отправка серверу команды STAT, иначе 14

14.      Отправка серверу команды QUIT.


1.5 AUTH аутентификация

1.         Если соединение с сервером установлено то 2, инчае вывод окна ошибки:

2.         Установка окна кнопки соединения с сервером в неактивное сотояние

3.         Устанвка окна кнопки разрыва соединения в активное стостояние

4.   Получение строки ответа от сервера в массив и buf. Количество байт, полученных от сервера присваивается переменной int recived.

5.   Формирование с помощью метода строки messtr.Forma() строки messtr messtr.Format("S: %s",buf)

6.   Поиск в полученной от сервера строки приветствия уникальной метки.

7.   Вывод строки messtr в ListBox.

8.   Обнуление массива buf

9.         Если от сервера получен положительный ответ, то 11, иначе 14

10.      Вычисление MD5 хэша от метки сервера с паролем пользователя в качестве ключа.

11.      Отправка серверу команды APOP:

out="AUTH " + login + " " + md5Capi.Digest(in)+"\n\r";

pSocket->Send(out,out.GetLength(),0)

12.      Если получен положительный ответ, то отправка серверу команды STAT, иначе 14

13.      Отправка серверу команды QUIT.


2. Описание алгоритма программы

Производится подключение к серверу. Если соединение не может быть установлено, то выдается соответствующее сообщение об ошибке и программа завершает свою работу. Если соединение с сервером установлено, то производится выбор ветки алгоритма, по которой пойдет выполнение программы. Она выбирается в зависимости от выбранного пользователем типа аутентификации. В зависимости от этого типа, программа выполняет соответствующую процедуру. Программа поддерживает три вида аутентификации: простая аутентификация, при которой пароль и имя пользователя передаются по каналу связи в незащищенном открытом виде; аутентификация с использованием безключевой хэш-функции MD5, аутентификация с использованием ключевой хэш-функции MD5. В случае, если пользователем выбран тип аутентификации – простая аутентификация, то производится переход к процедуре обработки этого типа аутентификации. В случае, если пользователем выбран тип аутентификации с использованием хэш-функций MD5, то производится формирование строки, которая используется для вычисления хэш-функции и производится переход к процедурам, обрабатывающим данные виды аутентификации.

 


Информация о работе «Разработка почтового клиента для операционной системы Windows»
Раздел: Информатика, программирование
Количество знаков с пробелами: 22490
Количество таблиц: 0
Количество изображений: 5

Похожие работы

Скачать
130194
3
17

... технология Single Worldwide Binary) — можно вводить текст на любом языке и запускать версию приложений Win32 для любого языка, используя соответствующую версию операционной системы Windows XP. + + Многоязычный пользовательский интерфейс — можно менять язык пользовательского интерфейса, чтобы работать с локализованными диалоговыми окнами, меню, файлами справки, словарями, средствами проверки ...

Скачать
160219
2
22

... информации: в штатном режиме; изменения в штатном режиме работы; нештатный режим (аварийные ситуации). Глава 2. Обоснование способов защиты операционной системы от программных закладок типа троянский конь 2.1 Общие сведения о троянских программах   Подсоединение локальных компьютерных сетей организаций к сети Internet приводит к необходимости уделять достаточно серьезное внимание ...

Скачать
255323
33
27

... в помещении представлена на рисунке 4.1 Рисунок 4.1 - Схема размещения светильников в аудитории № 209. Заключение В работе проведено исследование использования программ дистанционного обучения для подготовки учебно-методической документации, описаны их положительные стороны и выявлены основные проблемы. В результате проведенного исследования разработано web-приложение "R@Learning ...

Скачать
54584
0
0

... при этом достаточно компактной, надежной, простой в инсталляции и использовании, а также отвечающей требованиям, предъявляемым к современным ОС. В частности, такая платформа должна иметь удобный оконный интерфейс и обеспечивать многозадачность. Операционная система, созданная программистами Be Incorporated, получила название BeOS и в настоящий момент является одной из наиболее перспективных ...

0 комментариев


Наверх