Serwer wielowątkowy TCP - Java

PHOTO EMBED

Tue Nov 14 2023 15:19:18 GMT+0000 (Coordinated Universal Time)

Saved by @KutasKozla #java

import java.util.*;
import java.net.*;
import java.io.*;

public class Server {

    public static void main(String[] args) {

        for (String portStr : args) {
            try {
                int port = Integer.parseInt(portStr);
                new Thread(new ServerTask(port)).start();
            } catch (NumberFormatException e) {
                System.out.println("Incorrect port: " + portStr);
            }
        }
    }

    private static class ServerTask implements Runnable {
        private int port;

        public ServerTask(int port) {
            this.port = port;
        }

        public void run() {
            try (ServerSocket serverSocket = new ServerSocket(port)) {
                while (true) {
                    Socket clientSocket = serverSocket.accept();
                    new Thread(new ClientHandler(clientSocket)).start();
                }
            } catch (IOException e) {
                System.out.println("Error starting the server on port " + port);
            }
        }
    }

    private static class ClientHandler implements Runnable {
        private Socket clientSocket;

        public ClientHandler(Socket clientSocket) {
            this.clientSocket = clientSocket;
        }

        public void run() {
            try (InputStream input = clientSocket.getInputStream()) {
                byte[] buffer = new byte[20];
                int bytesRead = input.read(buffer);

                String receiveData = new String(buffer, 0, bytesRead);
                System.out.println(receiveData);
            } catch (IOException e) {
                System.out.println("Error receiving data from client");
                e.printStackTrace();
            } finally {
                try {
                    clientSocket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
content_copyCOPY

Napisz wielowątkowy serwer TCP. Program powinien być w stanie obsłużyć wielu łączących się do niego klientów. Program powinien odebrać od każdego klienta 20 bajtów danych, po czym je wyświetli w dowolnej kolejności. Port serwera zostanie przekazany jako pierwszy argument programu.