Objectifs
- Serveur multi-clients avec threads dédiés
- Transmission TCP et UDP
- Portail d'authentification obligatoire
- Interface console claire
Technologies
- Java SE — Sockets, DatagramSocket
- Multithreading (Runnable / Thread)
- Flux I/O et gestion d'exceptions
01 Structure du projet
Le projet est organisé en trois parties : le serveur, le client, et un portail de login. Chaque protocole (TCP, UDP) a ses propres classes. L'application démarre par une authentification avant de lancer les modules réseau.
02 Portail d'authentification
Le client affiche un écran de connexion demandant identifiant et mot de passe. Ces informations sont envoyées au serveur, qui valide ou refuse l'accès.
Socket socket = new Socket("127.0.0.1", 5000);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
System.out.print("Identifiant : ");
String user = sc.nextLine();
System.out.print("Mot de passe : ");
String pass = sc.nextLine();
out.println(user + ":" + pass);
String response = in.readLine();
if ("OK".equals(response)) {
System.out.println("Connexion autorisée !");
} else {
System.out.println("Accès refusé.");
}
03 TCP — Serveur & Client
Le serveur TCP écoute sur un port et lance un thread par client. Le client envoie des messages textuels et reçoit les réponses. Chaque échange est journalisé.
04 UDP — Serveur & Client
L'implémentation UDP repose sur des datagrammes indépendants. Le serveur reçoit et renvoie des paquets sans connexion persistante.
05 Multithreading
Pour éviter les blocages, le serveur crée un thread par client TCP ou par paquet UDP, permettant des échanges simultanés.
06 Sécurité d'accès
Aucun client non authentifié ne peut établir de communication. Une fois connecté, l'utilisateur accède à l'interface réseau.