/
mmarakayeva
/
lab5
Обзор
Документация
Войти
/
mmarakayeva
/
lab5
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/EchoClient.java
93 строки
4 KB
Миленикс
first_commit
14 июн 2026, 18:31
14 июн 2026, 18:31
2299a42
Код
Авторство
О чём код?
import java.io.*; import java.net.*; import java.util.Base64; /** * Клиент для эхо-сервера с Base64 * Отправляет строки серверу и получает закодированный ответ */ public class EchoClient { private static final String DEFAULT_HOST = "localhost"; private static final int DEFAULT_PORT = 12345; public static void main(String[] args) { // Поддержка аргументов командной строки String host = DEFAULT_HOST; int port = DEFAULT_PORT; if (args.length >= 1) { host = args[0]; } if (args.length >= 2) { try { port = Integer.parseInt(args[1]); } catch (NumberFormatException e) { System.err.println("Неверный порт, используется стандартный: " + DEFAULT_PORT); } } System.out.println("========================================"); System.out.println(" ЭХО-КЛИЕНТ (Base64)"); System.out.println("========================================"); System.out.println("Подключение к " + host + ":" + port); System.out.println("Введите сообщения (или 'exit' для выхода)"); System.out.println("========================================\n"); // try-with-resources для автоматического закрытия ресурсов try (Socket socket = new Socket(host, port); BufferedReader in = new BufferedReader( new InputStreamReader(socket.getInputStream(), "UTF-8")); PrintWriter out = new PrintWriter( new OutputStreamWriter(socket.getOutputStream(), "UTF-8"), true); BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in))) { System.out.println("[+] Подключено к серверу!"); System.out.println(); String userInput; // Читаем ввод пользователя while (true) { System.out.print("Введите сообщение: "); userInput = stdIn.readLine(); // Проверка на выход if (userInput == null || userInput.equalsIgnoreCase("exit")) { System.out.println("Завершение работы клиента..."); break; } // Отправляем серверу out.println(userInput); System.out.println(" Отправлено: \"" + userInput + "\""); // Получаем ответ String response = in.readLine(); if (response == null) { System.out.println("Сервер разорвал соединение."); break; } System.out.println(" Ответ сервера (Base64): \"" + response + "\""); // Декодируем для проверки try { String decoded = new String(Base64.getDecoder().decode(response), "UTF-8"); System.out.println(" Декодировано: \"" + decoded + "\""); } catch (IllegalArgumentException e) { System.out.println(" (Не удалось декодировать ответ)"); } System.out.println(); } } catch (UnknownHostException e) { System.err.println("Ошибка: неизвестный хост " + host); System.err.println("Проверьте правильность IP-адреса или имени хоста."); } catch (IOException e) { System.err.println("Ошибка ввода-вывода: " + e.getMessage()); System.err.println("Убедитесь, что сервер запущен и доступен."); } System.out.println("Клиент завершил работу."); } }