/
Shalva
/
Lab7_EchoServer
Обзор
Документация
Войти
/
Shalva
/
Lab7_EchoServer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main/java/com/example/lab7_echoserver/ServerApp.java
75 строк
4 KB
Kvaratskheliia Shalva
Исходный код программы Lab7_EchoServer
14 июн 2026, 19:04
14 июн 2026, 19:04
c1b8988
Код
Авторство
О чём код?
package com.example.lab7_echoserver; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class ServerApp { private static final int PORT = 12345; public static void main(String[] args) { System.out.println("=== Сервер запущен и ожидает подключения на порту " + PORT + " ==="); // Открываем серверный сокет (автоматически закроется благодаря try-with-resources) try (ServerSocket serverSocket = new ServerSocket(PORT)) { // Запускаем бесконечный цикл, чтобы сервер мог обрабатывать клиентов один за другим while (true) { // Ожидаем подключения клиента (программа замрет на этой строке до подключения) try (Socket clientSocket = serverSocket.accept(); // Поток для чтения данных ОТ клиента BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); // Поток для отправки данных ДЛЯ клиента PrintWriter writer = new PrintWriter(clientSocket.getOutputStream(), true)) { System.out.println("Клиент успешно подключился: " + clientSocket.getRemoteSocketAddress()); // Читаем строку, которую прислал клиент String inputLine = reader.readLine(); if (inputLine != null) { System.out.println("Получено от клиента: \"" + inputLine + "\""); // Вызываем метод переворота слов String reversedLine = reverseWords(inputLine); // Отправляем ответ обратно клиенту writer.println(reversedLine); System.out.println("Отправлен ответ: \"" + reversedLine + "\""); } System.out.println("Клиент отключен.\n"); } catch (IOException e) { System.err.println("Ошибка при обработке клиента: " + e.getMessage()); } } } catch (IOException e) { System.err.println("Не удалось запустить сервер на порту " + PORT + ": " + e.getMessage()); } } /** * Метод для переворота порядка слов в строке. * Разделитель — один или несколько пробелов (\\s+). */ private static String reverseWords(String sentence) { if (sentence == null || sentence.trim().isEmpty()) { return sentence; } // Разбиваем строку на массив слов по пробелам String[] words = sentence.trim().split("\\s+"); StringBuilder sb = new StringBuilder(); // Собираем строку в обратном порядке for (int i = words.length - 1; i >= 0; i--) { sb.append(words[i]); if (i > 0) { sb.append(" "); // Добавляем пробел между словами } } return sb.toString(); } }