File CentralizedMTP.java¶
File List > centralized > CentralizedMTP.java
Go to the documentation of this file
package skydata.centralized;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class CentralizedMTP {
private static List<String> tuples = new ArrayList<>();
public static void main(String[] args) {
int port = 9999; // Port d'écoute du serveur
try {
@SuppressWarnings("resource")
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("Serveur TCP démarré sur le port " + port);
while (true) {
Socket clientSocket = serverSocket.accept();
System.out.println("Client connecté : " + clientSocket);
// Création d'un thread pour traiter chaque client
ClientHandler clientHandler = new ClientHandler(clientSocket);
new Thread(clientHandler).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
static class ClientHandler implements Runnable {
private Socket clientSocket;
public ClientHandler(Socket socket) {
this.clientSocket = socket;
}
@Override
public void run() {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
String request;
while ((request = in.readLine()) != null) {
System.out.println("Request received : " + request);
String[] parts = request.split(" ");
if (parts.length >= 1) {
String command = parts[0].trim();
switch (command) {
case "ADD":
if (parts.length == 3) {
String addr = parts[1];
String mtp = parts[2];
tuples.add(addr + " " + mtp);
out.println("ADD : (" + addr + ", " + mtp + ")");
} else {
out.println("Error : ADD requires two arguemnts");
}
break;
case "GET":
StringBuilder result = new StringBuilder();
for (String tuple : tuples) {
result.append(tuple).append("\n");
}
result.append("EOF");
out.println(result.toString());
System.out.println("Answer : " + result.toString() + " " + tuples.toString());
break;
default:
out.println("Unknown command : " + command);
}
} else {
out.println("Errorr : none command");
}
}
in.close();
out.close();
clientSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}