From 77df0f82985b1ad330e99c536a449aa29dcba109 Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Wed, 4 Feb 2026 10:14:53 +0100 Subject: [PATCH] ex5 --- src/Ex5/App.java | 22 +++++++++++++++ src/Ex5/Client.java | 45 +++++++++++++++++++++++++++++++ src/Ex5/Server.java | 65 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 132 insertions(+) create mode 100644 src/Ex5/App.java create mode 100644 src/Ex5/Client.java create mode 100644 src/Ex5/Server.java diff --git a/src/Ex5/App.java b/src/Ex5/App.java new file mode 100644 index 0000000..0aab058 --- /dev/null +++ b/src/Ex5/App.java @@ -0,0 +1,22 @@ +package Ex5; + +import java.net.InetSocketAddress; +import java.util.Scanner; + +public class App { + public static void main(String[] args) throws Exception { + Server server = new Server(6666); + Client client = new Client(new InetSocketAddress("localhost", 6666)); + + Scanner scanner = new Scanner(System.in); + System.out.println("Entrez des messages :"); + while (true) { + String line = scanner.nextLine(); + System.out.println("[Client -> Server] " + line); + client.sendMessage(line); + + String response = client.readMessage(); + System.out.println("[Client <- Server] " + response); + } + } +} diff --git a/src/Ex5/Client.java b/src/Ex5/Client.java new file mode 100644 index 0000000..ac40a19 --- /dev/null +++ b/src/Ex5/Client.java @@ -0,0 +1,45 @@ +package Ex5; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.InetSocketAddress; +import java.net.Socket; + +public class Client { + + private final Socket socket; + + /** + * Create a new client + * + * @param address server adress (needed + * @throws IOException + */ + public Client(InetSocketAddress address) throws IOException { + this.socket = new Socket(address.getAddress(), address.getPort()); + + } + + public void sendMessage(String message) { + PrintWriter writer; + try { + writer = new PrintWriter(this.socket.getOutputStream(), true); + writer.println(message); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public String readMessage() { + try { + BufferedReader reader = new BufferedReader(new InputStreamReader(this.socket.getInputStream())); + return reader.readLine(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + +} diff --git a/src/Ex5/Server.java b/src/Ex5/Server.java new file mode 100644 index 0000000..ee0892b --- /dev/null +++ b/src/Ex5/Server.java @@ -0,0 +1,65 @@ +package Ex5; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.ServerSocket; +import java.net.Socket; + +public class Server { + + private final ServerSocket serverSocket; + + public Server(int port) throws IOException { + this.serverSocket = new ServerSocket(port); + new Thread(this::listen).start(); + System.out.println("Server running on port " + getPort()); + } + + public void close() { + try { + this.serverSocket.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public int getPort() { + return this.serverSocket.getLocalPort(); + } + + private void processConnexion(Socket socket) throws IOException { + new Thread(new Runnable() { + @Override + public void run() { + try { + readMessages(socket); + } catch (IOException e) { + e.printStackTrace(); + } + } + }).start(); + } + + private void listen() { + try { + while (true) { + Socket connexion = this.serverSocket.accept(); + processConnexion(connexion); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void readMessages(Socket socket) throws IOException { + BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); + PrintWriter writer = new PrintWriter(socket.getOutputStream(), true); + while (true) { + String message = reader.readLine(); + writer.println(message.toUpperCase()); + } + } + +}