Skip to content

VanRar/tryICQ

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Курсовой проект "Сетевой чат"

Описание проекта

Разработано два приложения для обмена текстовыми сообщениями по сети с помощью консоли (терминала) между двумя и более пользователями.

Первое приложение - сервер чата, ожидает подключения пользователей.

Второе приложение - клиент чата, подключается к серверу чата и осуществляет доставку и получение новых сообщений.

Все сообщения должны записываться в file.log как на сервере (server.log), так и на клиентах(client.log). File.log дополняется при каждом запуске, а также при отправленном или полученном сообщении. Выход из чата осуществлен по команде exit.

Описание сервера

  • Установка порта для подключения клиентов через файл настроек (settings.properties);
  • подключение к серверу в любой момент и присоединиться к чату;
  • Отправка новых сообщений клиентам;
  • Запись всех отправленных через сервер сообщений с указанием имени пользователя и времени отправки.

Описание клиента

  • Выбор имени для участия в чате;
  • Читает настройки приложения из файла настроек (settings.properties) - хостинг, номер порта сервера;
  • Подключение к указанному в настройках серверу;
  • Для выхода из чата нужно набрать команду выхода - “/exit”;
  • Каждое сообщение участников записывается в файл логирования (client.log). При каждом запуске приложения файл дополняется.

Описание реализации

  • Сервер одновременно ожидает новых пользователей и обрабатывает поступающие сообщения от пользователей;
  • Использован сборщик пакетов maven;
  • Код размещен на github;
  • Код покрыт unit-тестами.

Шаги реализации:

Схема приложений diagram (3)

P.S.: блок-схема не по госту, но она тут больше как что-то среднее между схемой приложения и структурной

Описание архитектуры приложений

На стороне сервера реализован один поток, который создается при каждом подключении. Данный поток при получении сообщения от любого клиента рассылает его всем подключившимся клиентам. На стороне клиента реализовано два параллельных потока, один на чтение в бесконечном цикле, другой - на запись, с условием выхода по команде /exit От каждого клиента отправляется сообщение вида { текущее время } (имя пользователя): текст сообщения

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages