ICQ-клиент

Автор: Пользователь скрыл имя, 08 Апреля 2012 в 14:17, курсовая работа

Описание работы

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

Содержание

Введение 5
1 Аналитический обзор литературы
1.1 Анализ предметной области
1.2 Сравнительная характеристика существующих аналогов 8
1.3 Постановка задачи 10
2 Модели, положенные в основу ПС
2.1 Функциональные модели
2.2 Разработка спецификации требований к программному средству 13
3 Разработка программного средства
3.1 Обоснование выбора среды разаработки
3.2 Особенности реализации
3.3 Разработка программной архитектуры
4 Тестирование программного средства
5 Методика работы с программным средством 20
Заключение
Список использованных источников
Приложение A. Листинг программного средства

Работа содержит 1 файл

KursKSIS.doc

— 841.00 Кб (Скачать)

Графической технологией, лежащей в основе WPF является DirectX, в отличие от Windows Forms, где используется GDI/GDI+[2]. Производительность WPF выше, чем у GDI+ за счёт использования аппаратного ускорения графики через DirectX.

XAML представляет собой XML, в котором фактически реализованы классы .NET Framework. Так же реализована модель разделения кода и дизайна, позволяющая кооперироваться программисту и дизайнеру. Кроме того, есть встроенная поддержка стилей элементов, а сами элементы легко разделить на элементы управления второго уровня, которые в свою очередь разлагаются до уровня векторных фигур и свойств/действий.

 

 

3.2 Особенности реализации

 

ICQ – клиент реализован на базе протокола OSCAR.

OSCAR — открытый (с 5 марта 2008 года), но не свободный сетевой протокол, обеспечивающий обмен мгновенными и оффлайновыми текстовыми сообщениями. В данный момент используется для двух систем: AIM (компания AOL, управляемая Time Warner) и ICQ (компания Mail.Ru).

OSCAR. "Open System for  Communication in Realtime" (рус. "Открытая система для общения в реальном времени") - внутреннее название проекта (в отличие от внешнего маркетингового названия) используется для определения протокола обмена мгновенными сообщениями.

FLAP – это низкоуровневый протокол передачи данных, который облегчает разработку высокоуровневых, дейтаграмно-ориентированных слоев по передачи данных. Он использует TCP-соединения между клиентами и серверами.

Байт FLAP-идентификатора всегда 0х2А. FLAP datagram sequence number  – используется для выявления ошибок.

FLAP channel – это идентификатор, используемый для определения различных типов данных во FLAP-пакете, для передачи данных через один и тот же TCP-сокет. В некотором роде это аналог TCP/UPD номеров портов. В OSCAR используются пять видов каналов:

0x01 – договор о новом соединении;

0х02 – SNAC-пакет;

0х03 – ошибка FLAP-уровня;

0х04 – договор о завершении соединения;

0х05 – оставаться в сети.

Наиболее часто используется канал 0х02, так как только по нему могут передаваться SNAC-пакеты.

SNAC – это базовый модуль передачи данных между клиентом и сервером. SNAC-слой находится выше FLAP-слоя, он является содержимым поля данных FLAP-а, передается только по каналу 0х02. Формат SNAC:

Нет никакой информации о длине данных в SNAC. Она должна быть определена из заголовка FLAP-а.Флаги являются одним из главных свойств пакета данных. Например, первый бит двухбайтового флага устанавлявается, если да данного id запроса было послано более одного SPAC.

TLV (type-length-value – тип-длина-значение) – очень удобный и эффективный метод для передачи данных в организованном формате, особенно строк переменной длины. 16 бит кода типа, 16 бит значения длины данных, сами данные:

TLV-блоки могут находиться внутри SNAC-блоков, но это не обязательно. Иногда их располагают непосредственно во FLAP-поле с данными, но чаще внутри SNAC. TLV-блоков в SNAC может быть несколько. Введение этих блоков было большим прорывом, ведь стало удобно посылать несколько строк или значений различной длины одним пакетом, например как {0x0011, 0x000c, "afritz@iname.com"}.

 

 

3.3 Разработка программной архитектуры

 

Сам проект состоит из двух подпроектов: Core и ICQLite. Первый отвечает за базовые функции ICQ, авторизацию, передачу данных и прочую бизнес-логику. ICQLite – содержит классы и окна, используемые для построения пользовательского интерфейса.

 

3.3.1 Core

Основной класс – Session, представляет собой ICQ сессию. Он агрегирует в себе классы-менеджеры ConnectionManager, SSIManager, MessageManager, StatusManager, и т.д. Ниже будут рассмотрены некоторые из них. Класс содержит методы InitializeLogger, Logon, Logoff, AddBuddy, RemoveBuddy, ActivateBuddyList, SendAuthorizationRequest и многие другие (все они располагаются в папке ObjectManagers проекта), которые далее оперируют с методами менеджеров. Также в нем имеются множество событий, которые срабатывают при происхождении каких-либо действий, на которые можно назначить обработчики событий из пользовательского интерфейса для его обновления.

AuthorizationManager – отвечает за авторизацию, содержит методы LoginToService, ProcessIncomingPacket, SendAuthorizationRequest, ProcessLoginResponse и др.

ConnectionManager – класс, отвечающий за установку соединения с сервером. Содержит методы CreateNewConnection, DeregisterConnection, CreateNewChatConnection, CreateNewFileTransferConnection, RemoveChatConnection и многие другие.

Если рассмотреть подробнее методы классов-менеджеров, то можно заметить, что во многих происходит построение TLV-блоков с данными, которые потом обворачиваются в SNAC-пакеты и отправляются на сервер.

Различные SNAC-и описаны как классы в папке SNACs, также там представлены методы работы с ними.

Класс Logging отвечает за логгирование поступивших и отправленных пакетов, что намного упрощает разработку и отладку проекта.

Также имеются классы с описанием делегатов для событий и аргументов различных событий.

 

3.3.2 ICQLite

В данном подпроекте реализован пользовательский интерфейс приложения. В нем используется концепция событийно-ориентированного программирования. Это значит, что в коде явным образом выделяется главный цикл программы, тело которого состоит из двух основных частей: выборки события и обработки события. Понятно, что недопустимы для приложения длительные выполнения обработчиков событий, поэтому многие операции выполняются в фоновом потоке. Но тут встает проблема обновления пользовательского интерфейса результатами обработки, ведь технология WPF не позволяет изменять UI из потоков, не являющихся основным. Решение – ставить обработчики событий в очередь на выполнение главному потоку методом Dispatcher.Invoke(…).

Первое окно, видимое пользователю при запуске приложения – класса LoginWindow, в нем имеются поля для ввода номера ICQ и пароля, в нем же происходит отправка на сервер этих данных. При успешно прошедшей авторизации это окно загружает окно с контактами класса ContactListWindow, а само закрывается.

ContactListWindow отображает контакты, расформированные по группам, в виде дерева элементов. В главном меню окна имеется возможность добавить контакт – за это отвечает окно AddContactWindow. Каждый контакт из списка контактов имеет контекстное меню, в нем присутствуют опции отображения информации о контакте (AboutWindow) и удаления контакта из серверного списка контактов.

При двойном щелчке на контакте открывается окно с чатом для данного контакта. При повторном двойном щелчке на нем же – то же самое окно повторно выходит на передний план.

ChatWindow. Имееет RichTextBox для ввода текста, а сама переписка отображается выше, с датой отправки сообщения. CheckBox внизу позволяет управлять отправкой сообщения по нажатию клавиши Enter, либо по нажатию кнопки “Send”.

Если окно ChatWindow c перепиской с определенным контактом не было открыто, либо было закрыто, а этот контакт отправил сообщение пользователю, то напротив него в списке контактов отображается значок в виде сообщения, по нажатию на который он пропадает, и открывается окно с чатом.

 

 

 

 

 

 

 

 

 

 

 

4        ТЕСТИРОВАНИЕ ПРОГРАММНОГО СРЕДСТВА

 

Для данного программного средства было использовано и функциональное тестирование:

Тестовые сценарии приведены в таблице 1.

 

Название модуля

Последовательность действий

Ожидаемый результат

1

Авторизация

1.       Заполнить обязательные поля на форме авторизации

2.       Нажать на кнопку авторизации

1.      Проверить наличие проверки на обязательные поля

2. Проверить факт авторизации

 

2

Добавление

контакта

1.       Заполнить поля на форме

2.       Нажать на кнопку добавления

1. Проверить удалось ли добавить новый контакт

3

Список контактов

1.      Удалить контакт

 

1.       Проверить удален ли контакт.

 

4

Список контактов

1.       Посмотреть информацию о контакте

 

1.       Проверить достоверность информации о контакте

5

Чат

1.       Отправить сообщение для пользователя, находящегося онлайн

1.       Проверить дошло ли сообщение до собеседника

2.       Проверить достоверность дошедшего сообщения

6

Чат

1.       Отправить сообщение для пользователя, находящегося оффлайн

1         Проверить дошло ли сообщение до собеседника

2         Проверить достоверность дошедшего сообщения

7

Чат

1.       Отправить сообщение другим контактом для контакта, находящегося онлайн

1 Проверить дошло ли сообщение до контакта

2            Проверить достоверность дошедшего сообщения

7

Чат

1.       Отправить сообщение другим контактом для контакта, находящегося оффлайн

1 Проверить дошло ли сообщение до контакта

2  Проверить достоверность дошедшего сообщения

Таблица 1 – Тестовые сценарии

 

 

5        МЕТОДИКА РАБОТЫ С ПРОГРАММНЫМ СРЕДСТВОМ

 

Login-форма cодержит поля для ввода логина (ICQ номера), пароля.

 

   

Рисунок 4.1Login – форма

 

По нажатию кнопки “Sign In” происходит отправка данных на сервер, выполняется авторизация пользователя в сети. При неудаче выводится сообщение о типе ошибки.

Также обновляется статус и проценты выполненной на сервере работы по авторизации:

 

    

Рисунок 4.2Статус авторизации

 

 

   

Рисунок 4.3 Общий вид программы

 

Контакты отображаются по названиям групп, внутри них – списки контактов, зеленый индификатор – контакт находится в сети, красный – оффлайн. Двойным щелчком по контакту открывается окно чата.

В окне чата реализована поддержка оффлайн сообщений (отображаются серым цветом). Есть форма для ввода текста, и форма для отображения переписки. Также можно включить отсылку сообщения по нажатию клавиши Enter.

Если окно чата закрыто, а сообщение от собеседника пришло, в списке контактов отображается значок письма. По двойному щелчку окно с чатом открывается, а он пропадает (заменяется на онлайн/оффлайн значок).

  

Рисунок 4.4Окно чата

 

Рисунок 4.5 Общий вид программы (Пришло сообщение)

 

   

Рисунок 4.5 Информация о пользователе

 

Добавление контакта идет в отдельном окне, после контакт лист заново перерисовывается. Удаление происходит при выборе данной опции из контекстного меню контакт-листа, после чего он также заново перерисовывается.

Рисунок 4.6 Добавление контакта

 

 

 

 

 

 

 

 

ЗАКЛЮЧЕНИЕ

 

В результате выполнения данной курсовой работы был получен программный продукт, названный "ICQLite". Было проведено исследование .NET Framework, которая использовалась при создании программного средства, а также протокола OSCAR.

В результате проделанной работы были усвоены основные приемы и навыки объектно-ориентированного программирования с использованием языка программирования высокого уровня C#. Применялись такие базовые концепции как: наследование, полиморфизм, инкапсуляция.

Программа реализует cредство мгновенного обмена сообщениями (англ. Instant messenger, способ обмена сообщениями через Интернет в реальном времени через службы мгновенных сообщений (Instant Messaging Service, IMS))

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

 

 

[1] Крупник А. Изучаем С#. Питер, 2001. – 480 c.

[2] Глинн Д. Платформа .NET 3.0 для профессионалов, 2008. – 1024c.

[3] Агуров П.В. C#. Сборник рецептов М.: ООО «Бином-Пресс», 2006. – 512 c.

[4] Шилдт Г. C#: учебный курс, 2007. – 768 c.

[5] Джейсон П. Visual C# 2.0. NET Полное руководство. СПб. : Питер Ком, 2004. – 288 с.

[6] Фролов А., Фролов Г. C#. Визуальное проектирование  приложений. М.: ООО «Бином-Пресс», 2006. – 512 c.

[7]   Кариев Ч.А. Разработка Windows-приложений на основе Visual C#, 2005. – 1000 c.

[8]  Буч Г. Объектно-ориентированный анализ и проектирование. Диалог-МИФИ, 2006. – 800 c.

[9] Бадд Т. Объектно-ориентированное программирование в действии. Диалог-МИФИ, 2005. – 650 c.

[10] Виейра Р. Программирование баз данных. Диалог-МИФИ, 2005. – 1020 c.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ВЕДОМОСТЬ КУРСОВОГО ПРОЕКТА

 

Обозначение

Наименование

Дополнительные сведения

 

Текстовые документы

 

 

 

 

БГУИР КП 1–40 01 01 328 ПЗ

Пояснительная записка

54 с.

 

 

 

 

 

 

 

Графические документы

 

 

 

 

ГУИР 751003 328 ПД

Схема работы системы

Формат А1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

БГУИР КР 1-40 01 01 328 Д1

 

 

 

 

 

 

 

 

 

 

Изм.

Л.

№ докум.

Подп.

Дата

 

 

ICQ-клиент

Ведомость курсового
проекта

 

Лист

Листов

Разраб.

Чеушев А.В.

 

 

Т

 

 

54

54

Пров.

Макаренко А.В.

 

 

Кафедра ПОИТ

гр. 751003

 

 

 

 

 

 

 

 

 

 

 

 

Информация о работе ICQ-клиент