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

Клиент сокета в Kotlin

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

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

import java.net.ServerSocket import java.net.Socket fun main() { ServerSocket(0).use { server -> val port = server.localPort Thread { server.accept().use { peer -> peer.getInputStream().bufferedReader() .use { input -> input.readLine() } } }.start() Socket("localhost", port).use { client -> client.getOutputStream().bufferedWriter() .use { output -> output.write("client line") output.newLine() output.flush() } } } }

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

import java.net.ServerSocket import java.net.Socket fun main() { ServerSocket(0).use { server -> val port = server.localPort Thread { server.accept().use { peer -> peer.getInputStream().bufferedReader() .use { input -> val text = input.readLine() println("server got: $text") } } }.start() Socket("localhost", port).use { client -> client.getOutputStream().bufferedWriter() .use { output -> output.write("note from client") output.newLine() output.flush() } } } }

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

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

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