Serwer wielowątkowy TCP - Java
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.
Comments