Клиент-Сервер. Приложение для чата.

Курсовой проект.

  1. Приложение состоит из двух частей: приложения сервера и приложения клиента.
  2. Роль сервера унифицирована, ролей клиентов может быть несколько. Общение между сервером и клиентами происходит параллельно. Количество клиентов ограничивается физическими параметрами исполняющего оборудования.
  3. Начало функционирования: запуск сервера
    public static void main(String[] args) throws IOException {
        Settings.writeToSettings("settings.txt");
        log.log(server, "server is started. Let's go!");
        try (ServerSocket serverSocket =
        new ServerSocket(Integer.parseInt(Settings.portNumberFromFile("settings.txt")))) {
        while (true) {
            ExecutorService group = Executors.newFixedThreadPool(4);
            group.execute(forGroup(serverSocket));
            }
        }
    }
    
  4. Запуск сервера осуществляется через файл настроек

settings.txt

Он содержит номер порта и хост через пробел.

  1. После запуска сервера в поле чата появляется служебное сообщение сервера о том, что сервер стартовал и начал свою работу.
[Сервер #1]2023-04-21T23:09:49.121399800===server is started.Let's go!
  1. Далее сервер ожидает подключения клиентов.
  2. Подключение клиентов также осуществляется через файл настроек, через номер порта.
 public static void main(String[]args)throws IOException{
        Socket clientSocket=new Socket(Settings.hostFromFile("settings.txt"),
        Integer.parseInt(Settings.portNumberFromFile("settings.txt")));
        Thread sending=new Thread(clientSendMessage(clientSocket));
        Thread getting=new Thread(clientGetMessage(clientSocket));
        sending.start();
        getting.start();
        }
  1. Приложение клиента содержит два потока, один - на считывание данных, другой - на приём. Потоки могут работать параллельно друг другу.
  2. Далее сервер отправляет клиенту запрос об имени, для регистрации в общем чате.
What is ur name?
        Maxim
  1. В общем чате появляются: вопрос об имени, отправленное имя и приветствие от сервера.
  2. Сообщение с приветствием и краткой инструкцией в ответ (сообщение №3 от сервера) также поступило подключенному клиенту.
  3. В ответ клиент отправляет своё сообщение, которое сервер выводит в общий чат и каждому клиенту: .
  4. После для прекращения подключения к серверу клиент вводит /exit, прощается и покидает чат.

После корректировки по замечаниям:

  1. Файл с настройками не перезаписывается.
  2. Сервер работает с несколькими клиентами, как параллельно, так и последовательно.