Файл: Разработка системы мгновенного обмена сообщениями.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 25.04.2024

Просмотров: 26

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ ЧЕЧЕНСКОЙ РЕСПУБЛИКИ

Государственное бюджетное профессиональное

образовательное учреждение

«Грозненский государственный колледж информационных технологий»

(ГБПОУ «ГГКИТ»)

Кафедра: «Информационных технологий и связи»

КУРСОВОЙ ПРОЕКТ

по МДК 01.01 Разработка программных модулей

на тему: «Разработка системы мгновенного обмена сообщениями»


Работу выполнил

студент группы: И1.19-41

специальности 09.02.07

Информационные системы и программирование

Умаров Заур Идалович

(Ф.И.О. полностью)
Руководитель:

преподаватель первой категории, Улхаева Х. М.

(должность, Ф.И.О.)


Оценка___________________

(прописью)
Преподаватель, подпись:

_________________________

(подпись/И.О. Фамилия)

г. Грозный

2022 г

СОДЕРЖАНИЕ





ВВЕДЕНИЕ



Актуальность темы данного курсовго проектирования обусловлена тем, что общение – одна из основных потребностей людей и обмен информацией является неотъемлемой частью формирования и развития личности. Для людей всегда важно иметь возможность общаться с другими людьми, передавать и получать различную информацию. На сегодняшний день компьютерные технологии проникают во все сферы человеческой деятельности. Становится сложно представить жизнь без них, так как они помогают хранить, обрабатывать, получать и распространять информацию, не взирая на расстояние. Поэтому было принято решение создать приложение, которое позволяет общаться людям через интернет.

Чат, чаттер (англ. chatter – болтать) – средство обмена сообщениями по компьютерной сети в режиме реального времени, а также программное обеспечение, позволяющее организовывать такое общение. Характерной особенностью является коммуникация именно в реальном времени или близкая к этому, что отличает чат от форумов и других «медленных» средств. Передача сообщений в режиме реального времени и есть главная особенность и преимущество чатов. Несмотря на бурный рост информационной индустрии, тема текстовых чатов всё ещё не потеряла своей актуальности и их часто используют на предприятиях или офисах, когда важно быстро получать или отправлять важную информацию.

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


Для достижения поставленной цели необходимо решить следующие задачи:

1. Изучить предметную область;

2. Провести анализ существующих систем мгновенного обмена сообщениями;

3. Разработать программное обеспечение.

  • Для разработки программного обеспечения необходимо:

  • Провести анализ подходов к работе с данными в серверных приложениях;

  • Провести анализ требований, предъявляемых к данному программному обеспечению;

  • Разработать архитектуру будущего программного обеспечения;

  • Написать код по разработанной архитектуре.

В данном курсовом проекте, будет разработана программа клиент-серверного чата, с возможность общения нескольких человек одновременно (all2all) в локальной сети.

Раздел 1. ТЕОРЕТИЧЕСКИЙ АНАЛИЗ И ПРОЕКТИРОВАНИЕ




1.1 Постановка задачи. Функции системы



Задачей данного курсового проектирования является создание клиент-серверного чата, состоящего из двух отдельных программ: сервер и клиент. Сервером является программа, к которой подключаются клиенты. Сервер принимает, отправляет и обрабатывает запросы, которые поступают от клиентской программы. К серверу может подключиться множество клиентов.

Функции сервера:

  • Выбор порта для работы.

  • Подключение клиентов.

  • Ведение списка всех подключённых клиентов.

  • Пересылка сообщений (Общих или приватных).

  • Функции администрирования клиентов (удаление, изменение имени, сообщение от имени администратора).

  • Ведение лога (история работы сервера).

  • Принятие и пересылка файлов.

Функции клиента:

  • Подключение к серверу, используя IP адрес и порт сервера.

  • Выбор имени (Nickname) под которым вас будут видеть остальные участники чата.

  • Отправка сообщений всем подключённым клиентам.

  • Отправка приватного сообщения.

  • Список всех клиентов сервера (получает от сервера).

  • Возможность отправить файл.

1.2 Архитектура системы



Мною выбрана одноуровневая клиент-серверная архитектура. Архитектура клиент-сервер применяется в большом числе сетевых технологий, используемых для доступа к различным сетевым сервисам:

  • Web-серверы.

  • Серверы приложений.

  • Серверы баз данных.

  • Файл-серверы.

  • Прокси-сервер.

  • Файрволы (брандмауэры).

  • Почтовые серверы.


Преимущества:

  • Отсутствие дублирования кода программы-сервера программами-клиентами.

  • Так как все вычисления выполняются на сервере, то требования к компьютерам, на которых установлен клиент, снижаются.

  • Все данные хранятся на сервере, который, как правило, защищён гораздо лучше большинства клиентов. На сервере проще обеспечить контроль полномочий, чтобы разрешать доступ к данным только клиентам с соответствующими правами доступа.

  • Позволяет объединить различные клиенты. Использовать ресурсы одного сервера часто могут клиенты с разными аппаратными платформами, операционными системами и т.п.

  • Позволяет разгрузить сети за счёт того, что между сервером и клиентом передаются небольшие порции данных.

1.3 Протокол. Описание протокола взаимодействия



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

Собственный протокол будет использовать текст для обмена, в отличии от бинарного протокола обмена, текстовый намного проще в освоении и т. к моей задачей является создание системы обмена мгновенными сообщениями, то очевидно что, текстовый протокол является наилучшим выбором.

Выбор протокола транспортного уровня пал на протокол TCP/IP, по следующим причинам:

  • TCP/IP сокеты используются для реализации надежных поточных соединений между компьютерами в сети Internet.

  • Соединение с использованием TCP/IP сокетов является постоянным и определяется в двух направлениях. C помощью TCP/IP сокетов можно программировать подключение систем ввода/вывода к программам, расположенным на любом компьютере в сети.

  • Помимо этого TCP/IP сокеты позволяют реализовать подключение и к локальной машине.

  • Зачастую на практике для соединения по TCP/IP сокетам на компьютерах открываются определенные порты, что позволяет расширить и разграничить канал подключения компьютера.

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

Вначале каждой команды стоит знак #, после идёт сама команда, а после команды параметры присущи этой команде, в общем виде это выглядит так:

#<Команда> [<параметр1>{; <параметр1>}]


Полный список Специальных команд сервера и клиента, представлен ниже в таблице 1 и 2.
Таблица 1. Команды сервера

Команда

Интерпретация

#M<имя отправителя>; <сообщение>

Сообщение для всех подключённых клиентов.

#N<имя отправителя>

Клиент посылает своё имя (nickname)

#P<имя отправителя>; <имя получателя>; <сообщение>

Приватное сообщение

#F<имя файла>

Получение файла

#S<имя файла>

Отправка файла всем клиентам


Особенности:

  • При получении сообщения, неважно общее оно или приватное, сервер рассылает его всем подключённым к нему клиентам, но принимает это сообщение только клиент, чьё имя совпадает с именем получателя, в случае с приватным сообщением.

  • При получении, какого либо файла сервер сохраняет файл во временной папке и после этого рассылает файл всем подключённым клиентам. (Файлы в папке хранятся до выключения программы)

  • Значение приватности не работает при пересылке файла.

Команды клиента
Таблица 2. Команды клиента

Команда

Интерпретация

#F<имя файла>

Получение файла.

#K<новое имя>

Сервер прислал новый ник

#U{<имя>}

Сервер прислал список клиентов

#M<сообщение>

Общее сообщение

#P<имя отправителя>; <имя получателя>; <сообщение>

Приватное сообщение

#N

Запрос имени от сервера

#D<имя>

Отключение администратором

#A<сообщение>

Сообщение от администратора


Особенности:

  • Так же как и у сервера у клиента есть временная папка, которая очищается после закрытия программы.

  • При отправки клиентом файла сначала отправляется команда для создания файла, потом создаётся файл для отправки (файл записывается в переменную), и после отправляется на сервер.

  • Сообщение от администратора появляется не в общем чате а в всплывающем окне.




1.4 Взаимодействие клиента и сервера



Предположим что сервер запушен и нормально функционирует, рассмотрим типичные ситуации работы в сети:

1. Подключение клиента:

  • Клиент подключается к серверу зная его адрес и порт.

  • Сервер обнаружив новое соединение, отправляет на все соединения строку ‘#N’ (Запрос имени клиента).

  • Все подключенные клиенты в том числе и только что подключенный, получив запрос сервера отправляют на сервер строку ‘#Nимя’, где «имя» это имя клиента.

  • Сервер получив такую строку добавляет «имя» в список клиентов.

2. Отключение клиента:

Отключение может произойти по разным причинам: клиент сам отключился, клиента отключил администратор, из-за сбоя работы сервера или клиента.

  • Отключившись клиент просто прерывает связь с сервером.

  • Сервер заметив что кто то отключился, запрашивает у оставшихся подключений их имена послав строку ‘#N’ (Запрос имени клиента).

  • Все подключенные клиенты, получив запрос сервера отправляют на сервер строку ‘#Nимя’, где «имя» это имя клиента.

  • Сервер получив такую строку добавляет «имя» в список клиентов.

Если инициатива отключения исходит от администратора:

  • Сервер посылает строку ‘#Dимя’ всем подключенным клиентам, где «имя» это имя клиента который должен отключиться.

  • Клиент узнав своё имя отключается от сервера

  • Если произошёл сбой работы сервера:

  • Клиент поняв что сервер не отвечает, разрывает соединение с неактивным сервером.

Если произошёл сбой работы клиента, то процедура отключения ничем не отличается от обычной.

3. Отправка общего сообщения:

  • Клиент посылает на сервер строку ’ #M сообщение’, где сообщение это текст который клиент хочет чтобы видели все участники чата.

  • Сервер получив эту строку не изменяя её, просто рассылает её всем клиентам включая отправителя.

  • Клиенты получив эту строку отображают ‘сообщение’ в компонент отображения.

4. Отправка приватного сообщения:

  • Клиент c именем ‘имя1’ посылает на сервер строку ’ #Pимя1; имя2; сообщение’, где ‘сообщение’ это текст который клиент хочет отправить клиенту с именем ‘имя2’, ‘; ’ – это разделитель.

  • Сервер получив эту строку не изменяя её, просто рассылает её всем клиентам включая отправителя.

  • Клиент получив эту строку, определив что он получатель отображают ‘сообщение’ в компонент отображения, все же остальные пропускают строку.