Skip to content

turaldinio/NetworkChat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Программа сервера и клиентов

Данная программа запускает сервер, и позволяет нескольким клиентам подключаться к этому серверу.

##Программа содержит 3 основных пакета

  • client хранит в себе сущность клиента и класс, отвечающий за чтение данных, вводимых клиентом
  • server хранит в себе сам сервер
  • sharedResources хранит в себе вспомогательные классы (считыватели настроек и т д)и файлы

Основные классы и их предназначение:

  • Класс Connection-класс обертка над Socket, который хранит в себе Socket,ObjectOutputStream и ObjectInputStream. Он стерилизует все отправляемые сообщения (Message) в ObjectOutputStream. и при необходимости может их десериализовать. Так же класс поддерживает интерфейс Closable для автоматического ого закрытия всех потоков. Структура класса:Connection

  • Класс Logger - Класс предназначен для логирования информации и от сервера, и от клиентов, в один файл, который будет создать автоматически при запуске программы. Так же елси файл уже был создан ранее, при новом запуске программы, данные в файле буду сброшены. Это сделано для того, чтобы не писать в один файл результаты работы двух программ. Также Logger дублирует и информацию в консоль. Структура класса:![Logger](https://user-images.githubusercontent.com/65041919/187931999-bf33bcd2-618d-4af3-8d32-a0ca2672a6e9.png

  • Класс Message-Класс предназначенный для создания обёртки над отправлемыемими сообщениями. Содержит в себе тип сообщения MessageType и сам текст сообщения. Поддерживает сериализацию и десериализацию Структура класса:Message

  • Enum MessageType- специальное перечисление,которое позволяет определить тип отправленных/полученных сообщения от сервера и от клиента.

  • Класс SettingReader-специальный класс, предназначенный для чтения из файла настроек данных для ServerSocket и для Socket. Структура класса:SettingReader

  • Класс Server-Класс в котором реализована основная логика Сервера. Данный класс отвечает за корректную работу сервера, подключение и обслуживание клиентов. Все клиенты обслуживаются в отдельных потоках,и хранятся в специальной мапе , которая не позволяет соаздть двух клиентов с одинаковым именем. Структура класса:Server

  • Класс Client-Класс предоставляющий клиента. Данный класс создает и подключает клиента к нашему серверу ,используя настройки в файле sharedResources/serverSettings.property. Все клиенты создаются в отдельных потоках.За это отвечает внутренний класс SocketThread Структура класса:Client

  • Класс ClientTextReader -чтобы не создавать все время поток для чтения сообщений клиентами, был создан этот отдельный класс, который просто инициализирует Scanner для чтения пользовательских вводов с консоли Структура класса:ClientTextReader

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages