Система обмена сообщениями
Выполнил: ст.гр. ИВТ-10
Попов Владимир Михайлович
Новокузнецк 2013
Содержание
Содержание. 2
Введение. 3
1.Теоретический анализ и проектирование. 5
1.1. Постановка задачи. Функции системы. 5
1.2. Архитектура системы. 6
1.3 Протокол. Описание протокола взаимодействия. 7
1.4 Взаимодействие клиента и сервера. 10
2. Программная реализация. 12
2.1 Используемые компоненты. 13
2.2 Описание свойств и методов. 14
2.3 Исходный код Сервера отвечающий за сетевое взаимодействие. 16
2.4 Исходный код Клиента отвечающий за сетевое взаимодействие. 19
2.5 Порядок работы с программой. 24
2.5.1 Работа с сервером. 24
2.5.2 Работа с клиентом. 27
2.6 Тестирование системы.. 29
Заключение. 30
Используемые источники. 31
Введение
Чат, чаттер (англ. chatter — болтать) — средство обмена сообщениями по компьютерной сети в режиме реального времени, а также программное обеспечение, позволяющее организовывать такое общение. Характерной особенностью является коммуникация именно в реальном времени или близкая к этому, что отличает чат от форумов и других «медленных» средств. Передача сообщений в режиме реального времени и есть главная особенность и преимущество чатов. Несмотря на бурный рост информационной индустрии, тема текстовых чатов всё ещё не потеряла своей актуальности и их часто используют на предприятиях или офисах, когда важно быстро получать или отправлять важную информацию.
Существует несколько разновидностей программной реализации чатов:
· HTTP или веб-чаты. Такой чат выглядит как обычная веб-страница, где можно прочесть последние несколько десятков фраз, написанные участниками чата и модераторами. Страница чата автоматически обновляется с заданной периодичностью.
|
· Чаты, использующие технологию Adobe Flash. Вместо периодической перезагрузки страницы между клиентом и сервером открывается сокет, что позволяет моментально отправлять или получать сообщения, расходуя меньше трафика.
· Программы-чаты для общения в локальных сетях (например, Vypress Chat, Intranet Chat, Pichat). Часто есть возможность передачи файлов.
· Чаты, реализованные поверх сторонних протоколов (например, чат, использующий ICQ).
· Чаты, работающие по схеме клиент-сервер, это позволяет использовать их в сетях со сложной конфигурацией, а также управлять клиентскими приложениями (например, Mychat,Jabber)
В данном курсовом проекте, будет разработана программа клиент-серверного чата, с возможность общения нескольких человек одновременно(all2all) в локальной сети.
Теоретический анализ и проектирование
Постановка задачи. Функции системы.
Задачей данной курсовой работы является создание клиент-серверного чата, состоящего из двух отдельных программ: сервер и клиент. Сервером является программа, к которой подключаются клиенты. Сервер принимает, отправляет и обрабатывает запросы, которые поступают от клиентской программы. К серверу может подключиться множество клиентов.
Функции сервера:
· Выбор порта для работы.
· Подключение клиентов.
· Ведение списка всех подключённых клиентов.
· Пересылка сообщений (Общих или приватных).
· Функции администрирования клиентов (удаление, изменение имени, сообщение от имени администратора).
|
· Ведение лога (история работы сервера).
· Принятие и пересылка файлов.
Функции клиента:
· Подключение к серверу, используя IP адрес и порт сервера.
· Выбор имени (Nickname) под которым вас будут видеть остальные участники чата.
· Отправка сообщений всем подключённым клиентам.
· Отправка приватного сообщения.
· Список всех клиентов сервера (получает от сервера).
· Возможность отправить файл.
Архитектура системы.
Мною выбрана одноуровневая Клиент-серверная архитектура. Архитектура клиент-сервер применяется в большом числе сетевых технологий, используемых для доступа к различным сетевым сервисам:
· Web-серверы
· Серверы приложений
· Серверы баз данных
· Файл-серверы
· Прокси-сервер
· Файрволы (брандмауэры)
· Почтовые серверы
Преимущества
· Отсутствие дублирования кода программы-сервера программами-клиентами.
· Так как все вычисления выполняются на сервере, то требования к компьютерам, на которых установлен клиент, снижаются.
· Все данные хранятся на сервере, который, как правило, защищён гораздо лучше большинства клиентов. На сервере проще обеспечить контроль полномочий, чтобы разрешать доступ к данным только клиентам с соответствующими правами доступа.
· Позволяет объединить различные клиенты. Использовать ресурсы одного сервера часто могут клиенты с разными аппаратными платформами, операционными системами и т. п.
· Позволяет разгрузить сети за счёт того, что между сервером и клиентом передаются небольшие порции данных.
Протокол. Описание протокола взаимодействия
Так как моя работа заключается в создании простого чата без специальных функция, то я решил что, намного проще будет написать свой собственный протокол взаимодействия сервера и клиента, так как существующие уже протоколы сложны в освоении и имеют множество функций которые мне не понадобятся в моей работе.
|
Мой собственный протокол будет использовать текст для обмена, в отличии от бинарного протокола обмена, текстовый намного проще в освоении и т.к моей задачей является создание системы обмена мгновенными сообщениями, то очевидно что, текстовый протокол является наилучшим выбором.
Выбор протокола транспортного уровня пал на протокол 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(Команды сервера).
Особенности:
· При получении сообщения, неважно общее оно или приватное, сервер рассылает его всем подключённым к нему клиентам, но принимает это сообщение только клиент, чьё имя совпадает с именем получателя, в случае с приватным сообщением.
· При получении, какого либо файла сервер сохраняет файл во временной папке и после этого рассылает файл всем подключённым клиентам. (Файлы в папке хранятся до выключения программы)
· Значение приватности не работает при пересылке файла.
Команды клиента
Команда | Интерпретация |
#F<имя файла> | Получение файла. |
#K<новое имя> | Сервер прислал новый ник |
#U{<имя>} | Сервер прислал список клиентов |
#M<сообщение> | Общее сообщение |
#P<имя отправителя>;<имя получателя>;<сообщение> | Приватное сообщение |
#N | Запрос имени от сервера |
#D<имя> | Отключение администратором |
#A<сообщение> | Сообщение от администратора |
Таблица №2(Команды клиента).
Особенности:
· Так же как и у сервера у клиента есть временная папка, которая очищается после закрытия программы.
· При отправки клиентом файла сначала отправляется команда для создания файла, потом создаётся файл для отправки (файл записывается в переменную), и после отправляется на сервер.
· Сообщение от администратора появляется не в общем чате а в всплывающем окне.