Примеры Java - Пример обмена данными между ServerSocket и Socket

Примеры Java

Следующий пример демонстрирует, как клиент отправляет сообщение серверу, сервер получает сообщение и считывает выходные данные, затем записывает их клиенту, а клиент получает выходные данные.

1. Настройка серверной стороны

  • Сервер устанавливает ServerSocket для связи
  • Сервер создает Socket для приема клиентских подключений
  • Создайте входной поток IO для чтения данных, отправленных клиентом
  • Создайте выходной поток IO для отправки сообщений с данными клиенту

Код на стороне сервера:

Файл Server.java

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String[] args) { try { ServerSocket ss = new ServerSocket(8888); System.out.println("Запуск сервера...."); Socket s = ss.accept(); System.out.println("Клиент:"+s.getInetAddress().getLocalHost()+"Подключено к серверу"); BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); //Прочитать сообщение, отправленное клиентом String mess = br.readLine(); System.out.println("Клиент:"+mess); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); bw.write(mess+"\n"); bw.flush(); } catch (IOException e) { e.printStackTrace(); } } }

Вывод выполнения приведенного выше кода:

Start server....

2. Настройка клиентской стороны

  • Создайте Socket-соединение, задайте IP-адрес и порт сервера связи
  • Создайте выходной поток IO для отправки сообщений с данными на сервер
  • Создайте входной поток IO для чтения сообщений с данными, отправленных сервером

Код на стороне клиента:

Файл Client.java

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.Socket; import java.net.UnknownHostException; public class Client { public static void main(String[] args) { try { Socket s = new Socket("127.0.0.1",8888); //Создание IO InputStream is = s.getInputStream(); OutputStream os = s.getOutputStream(); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os)); //Отправить сообщение на сторону сервера bw.write("Проверить обмен данными между клиентом и сервером; сервер получает сообщение и возвращает его клиенту\n"); bw.flush(); //Прочитать сообщение, возвращённое сервером BufferedReader br = new BufferedReader(new InputStreamReader(is)); String mess = br.readLine(); System.out.println("Server:"+mess); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }

Вывод выполнения приведенного выше кода:

Server: Testing communication between client and server; the server receives the message and returns it to the client.

Примеры Java

Другие расширения