- •Система обмена сообщениями
- •Содержание
- •Введение
- •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 Тестирование системы
- •Заключение
- •Используемые источники
1.2. Архитектура системы.
Мною выбрана одноуровневая Клиент-серверная архитектура. Архитектура клиент-сервер применяется в большом числе сетевых технологий, используемых для доступа к различным сетевым сервисам:
Web-серверы
Серверы приложений
Серверы баз данных
Файл-серверы
Прокси-сервер
Файрволы (брандмауэры)
Почтовые серверы
Преимущества
Отсутствие дублирования кода программы-сервера программами-клиентами.
Так как все вычисления выполняются на сервере, то требования к компьютерам, на которых установлен клиент, снижаются.
Все данные хранятся на сервере, который, как правило, защищён гораздо лучше большинства клиентов. На сервере проще обеспечить контроль полномочий, чтобы разрешать доступ к данным только клиентам с соответствующими правами доступа.
Позволяет объединить различные клиенты. Использовать ресурсы одного сервера часто могут клиенты с разными аппаратными платформами, операционными системами и т. п.
Позволяет разгрузить сети за счёт того, что между сервером и клиентом передаются небольшие порции данных.
1.3 Протокол. Описание протокола взаимодействия
Так как моя работа заключается в создании простого чата без специальных функция, то я решил что, намного проще будет написать свой собственный протокол взаимодействия сервера и клиента, так как существующие уже протоколы сложны в освоении и имеют множество функций которые мне не понадобятся в моей работе.
Мой собственный протокол будет использовать текст для обмена, в отличии от бинарного протокола обмена, текстовый намного проще в освоении и т.к моей задачей является создание системы обмена мгновенными сообщениями, то очевидно что, текстовый протокол является наилучшим выбором.
Выбор протокола транспортного уровня пал на протокол TCP/IP, по следующим причинам:
TCP/IP сокеты используются для реализации надежных поточных соединений между компьютерами в сети Internet.
Соединение с использованием TCP/IP сокетов является постоянным и определяется в двух направлениях. C помощью TCP/IP сокетов можно программировать подключение систем ввода/вывода к программам, расположенным на любом компьютере в сети.
Помимо этого TCP/IP сокеты позволяют реализовать подключение и к локальной машине.
Зачастую на практике для соединения по TCP/IP сокетам на компьютерах открываются определенные порты, что позволяет расширить и разграничить канал подключения компьютера.
Всё взаимодействие сервера и клиента будет заключаться в специальных командах посылаемых друг другу в виде текстовых строк.
Вначале каждой команды стоит знак #, после идёт сама команда, а после команды параметры присущи этой команде, в общем виде это выглядит так:
#<Команда>[<параметр1>{;<параметр1>}]
Полный список Специальных команд сервера и клиента, представлен ниже в таблице №1 и №2.
Команды сервера
Команда |
Интерпретация |
#M<имя отправителя>;<сообщение> |
Сообщение для всех подключённых клиентов. |
#N<имя отправителя> |
Клиент посылает своё имя (nickname) |
#P<имя отправителя> ;<имя получателя>;<сообщение>
|
Приватное сообщение |
#F<имя файла>
|
Получение файла |
#S<имя файла> |
Отправка файла всем клиентам |
Таблица №1(Команды сервера).
Особенности:
При получении сообщения, неважно общее оно или приватное, сервер рассылает его всем подключённым к нему клиентам, но принимает это сообщение только клиент, чьё имя совпадает с именем получателя, в случае с приватным сообщением.
При получении, какого либо файла сервер сохраняет файл во временной папке и после этого рассылает файл всем подключённым клиентам. (Файлы в папке хранятся до выключения программы)
Значение приватности не работает при пересылке файла.
