Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpSoCln 301 of 322 menu
◀ ▶

Клиент TCP-сокета в Java

Клиентская сторона открывает соединение классом Socket: первый аргумент конструктора - имя хоста, второй - номер порта, на котором уже слушает сервер. Объект Socket реализует AutoCloseable, поэтому его удобно держать в try-with-resources.

Текст на сервер передают вывода сокета. BufferedWriter принимает строку, newLine() завершает запись переводом строки, flush() отправляет буфер в сеть сразу, не дожидаясь закрытия:

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; public class Main { public static void main(String[] args) throws Exception { try (ServerSocket server = new ServerSocket(0)) { int port = server.getLocalPort(); Thread worker = new Thread(() -> { try (Socket peer = server.accept()) { BufferedReader input = new BufferedReader( new InputStreamReader(peer.getInputStream()) ); input.readLine(); } catch (Exception e) { throw new RuntimeException(e); } }); worker.start(); try (Socket client = new Socket("localhost", port)) { BufferedWriter output = new BufferedWriter( new OutputStreamWriter(client.getOutputStream()) ); output.write("client line"); output.newLine(); output.flush(); } } } }

Сервер в фоне лишь принимает соединение и читает строку, это заготовка для проверки клиента. Адрес localhost и порт из getLocalPort() совпадают с теми, что выбрал ServerSocket в том же запуске:

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; public class Main { public static void main(String[] args) throws Exception { try (ServerSocket server = new ServerSocket(0)) { int port = server.getLocalPort(); Thread worker = new Thread(() -> { try (Socket peer = server.accept()) { BufferedReader input = new BufferedReader( new InputStreamReader(peer.getInputStream()) ); String text = input.readLine(); System.out.println("server got: " + text); } catch (Exception e) { throw new RuntimeException(e); } }); worker.start(); try (Socket client = new Socket("localhost", port)) { BufferedWriter output = new BufferedWriter( new OutputStreamWriter(client.getOutputStream()) ); output.write("note from client"); output.newLine(); output.flush(); } } } }

В одном запуске клиент отправляет строку "ping", сервер печатает её с префиксом "got: " в консоли.

Строка "alpha" уходит с клиента на localhost; на стороне сервера в консоли должно появиться "alpha" без изменений.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить