ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.04.2024
Просмотров: 30
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Раздел 1. ТЕОРЕТИЧЕСКИЙ АНАЛИЗ И ПРОЕКТИРОВАНИЕ
1.1 Постановка задачи. Функции системы
1.3 Протокол. Описание протокола взаимодействия
1.4 Взаимодействие клиента и сервера
Раздел 2. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ
2.2 Описание свойств и методов
2.3 Исходный код Сервера отвечающий за сетевое взаимодействие
2.4 Исходный код Клиента отвечающий за сетевое взаимодействие
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ ЧЕЧЕНСКОЙ РЕСПУБЛИКИ
Государственное бюджетное профессиональное
образовательное учреждение
«Грозненский государственный колледж информационных технологий»
(ГБПОУ «ГГКИТ»)
Кафедра: «Информационных технологий и связи»
КУРСОВОЙ ПРОЕКТ
по МДК 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’, ‘; ’ – это разделитель.
-
Сервер получив эту строку не изменяя её, просто рассылает её всем клиентам включая отправителя. -
Клиент получив эту строку, определив что он получатель отображают ‘сообщение’ в компонент отображения, все же остальные пропускают строку.