Шаг 156.
Язык программирования Java.
Второй пример сервера

На этом шаге мы приведем второй пример сервера

По аналогии с клиентом, усовершенствуем серверную часть. Текст программы представлен ниже.

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

    public static void main(String[] args) throws IOException {
        // try с ресурсами, чтобы корректно закрыть потом сокет
        try (ServerSocket socket = new ServerSocket(Constants.PORT)) {

            System.out.println("Server started");

            // Ждем подключения клиента
            Socket client = socket.accept();

            System.out.println("Client connected");

            // После подключения получаем необходимые потоки
      DataInputStream inputStream = new DataInputStream(client.getInputStream());
      DataOutputStream outputStream = new DataOutputStream(client.getOutputStream());

            // После подключения чиатем сообщения
            while (true) {
                // Получаем сообщение
                String text = inputStream.readUTF();
                System.out.println("Client sending: " + text);

                // Переотправляем полученное сообщение
                outputStream.writeUTF(text);
                outputStream.flush();

                // Если ввели END_OF_WORK прекращаем работу
                if (Constants.END_OF_WORK.equals(text)) {
                    break;
                }
            }

            // Обязательно закрываем потоки
            inputStream.close();
            outputStream.close();

            // И обязательно закрываем клиентский сокет
            client.close();

            System.out.println("Server shutdown");
        }
    }
}

Проект можно взять здесь


Рис. 1. Вывод программы

На следующем шаге мы рассмотрим способ одновременной обработки нескольких соединений

Предыдущий шаг Содержание Следующий шаг