
- •Система обмена сообщениями
- •Содержание
- •Введение
- •1.Теоретический анализ и проектирование
- •1.1. Постановка задачи. Функции системы.
- •1.2. Архитектура системы.
- •1.3 Протокол. Описание протокола взаимодействия
- •Команды клиента
- •1.4 Взаимодействие клиента и сервера
- •1.Подключение клиента:
- •2.Отключение клиента:
- •3.Отправка общего сообщения:
- •4.Отправка приватного сообщения:
- •5.Отправка Файла:
- •2. Программная реализация
- •2.1 Используемые компоненты.
- •2.2 Описание свойств и методов
- •2.3 Исходный код Сервера отвечающий за сетевое взаимодействие
- •2.4 Исходный код Клиента отвечающий за сетевое взаимодействие
- •2.5 Порядок работы с программой
- •2.5.1 Работа с сервером.
- •2.5.2 Работа с клиентом.
- •2.6 Тестирование системы
- •Заключение
- •Используемые источники
Команды клиента
Команда |
Интерпретация |
#F<имя файла> |
Получение файла. |
#K<новое имя> |
Сервер прислал новый ник |
#U{<имя>} |
Сервер прислал список клиентов |
#M<сообщение> |
Общее сообщение |
#P<имя отправителя>;<имя получателя>;<сообщение> |
Приватное сообщение |
#N |
Запрос имени от сервера |
#D<имя> |
Отключение администратором |
#A<сообщение> |
Сообщение от администратора |
Таблица №2(Команды клиента).
Особенности:
Так же как и у сервера у клиента есть временная папка, которая очищается после закрытия программы.
При отправки клиентом файла сначала отправляется команда для создания файла, потом создаётся файл для отправки (файл записывается в переменную), и после отправляется на сервер.
Сообщение от администратора появляется не в общем чате а в всплывающем окне.
1.4 Взаимодействие клиента и сервера
Предположим что сервер запушен и нормально функционирует, рассмотрим типичные ситуации работы в сети:
1.Подключение клиента:
Клиент подключается к серверу зная его адрес и порт.
Сервер обнаружив новое соединение, отправляет на все соединения строку ‘#N’ (Запрос имени клиента).
Все подключенные клиенты в том числе и только что подключенный, получив запрос сервера отправляют на сервер строку ‘#Nимя’, где «имя» это имя клиента.
Сервер получив такую строку добавляет «имя» в список клиентов.
2.Отключение клиента:
Отключение может произойти по разным причинам: клиент сам отключился, клиента отключил администратор, из-за сбоя работы сервера или клиента.
Отключившись клиент просто прерывает связь с сервером.
Сервер заметив что кто то отключился, запрашивает у оставшихся подключений их имена послав строку ‘#N’ (Запрос имени клиента).
Все подключенные клиенты, получив запрос сервера отправляют на сервер строку ‘#Nимя’, где «имя» это имя клиента.
Сервер получив такую строку добавляет «имя» в список клиентов.
Если инициатива отключения исходит от администратора:
Сервер посылает строку ‘#Dимя’ всем подключенным клиентам, где «имя» это имя клиента который должен отключиться.
Клиент узнав своё имя отключается от сервера
Если произошёл сбой работы сервера:
Клиент поняв что сервер не отвечает, разрывает соединение с неактивным сервером.
Если произошёл сбой работы клиента, то процедура отключения ничем не отличается от обычной.
3.Отправка общего сообщения:
Клиент посылает на сервер строку ’ #M сообщение’, где сообщение это текст который клиент хочет чтобы видели все участники чата.
Сервер получив эту строку не изменяя её, просто рассылает её всем клиентам включая отправителя.
Клиенты получив эту строку отображают ‘сообщение’ в компонент отображения.
4.Отправка приватного сообщения:
Клиент c именем ‘имя1’ посылает на сервер строку ’ #Pимя1; имя2;сообщение’, где ‘сообщение’ это текст который клиент хочет отправить клиенту с именем ‘имя2’, ‘;’ - это разделитель.
Сервер получив эту строку не изменяя её, просто рассылает её всем клиентам включая отправителя.
Клиент получив эту строку, определив что он получатель отображают ‘сообщение’ в компонент отображения, все же остальные пропускают строку.