This commit is contained in:
2026-02-04 10:14:53 +01:00
parent 22a11a0fa6
commit 77df0f8298
3 changed files with 132 additions and 0 deletions

22
src/Ex5/App.java Normal file
View File

@@ -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);
}
}
}

45
src/Ex5/Client.java Normal file
View File

@@ -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;
}
}

65
src/Ex5/Server.java Normal file
View File

@@ -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());
}
}
}