Tcp client
java.io.BufferedReader : pour lire le texte à partir d'un flux d'entrée (input stream).
java.io.IOException : pour gérer les erreurs d'entrée/sortie.
java.io.InputStreamReader : pour lire des octets et les convertir en caractères.
java.net.Socket : pour la communication réseau via des sockets.
java.io.PrintWriter : pour écrire du texte dans un flux de sortie (output stream)
1. Déclaration de la classe et de la méthode principale
public class TCPClient {
public static void main(String[] args) {
2. Définition des paramètres de connexion
String serverAddress = "localhost"; // Adresse du serveur (peut être remplacée par l'adresse IP
du serveur)
int serverPort = 1234; // Port du serveur
String messageToSend = "Hello, Server!"; // Message à envoyer au serveur
3. Connexion au serveur et gestion des flux de données
try (Socket socket = new Socket(serverAddress, serverPort)) {
// Initialisation des flux d'entrée et de sortie
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
try (Socket socket = new Socket(serverAddress, serverPort)) : essaie d'établir une connexion avec le
serveur. Utilisation d'un bloc try-with-resources pour s'assurer que le socket est fermé
automatiquement
BufferedReader in = new BufferedReader(new
InputStreamReader(socket.getInputStream())) : initialise le flux d'entrée pour lire les
données envoyées par le serveur.
PrintWriter out = new PrintWriter(socket.getOutputStream(), true) : initialise le flux
de sortie pour envoyer des données au serveur. Le deuxième argument "true" active l'auto-
flux (auto-flush)
4. Envoi du message au serveur
// Envoi du message au serveur
out.println(messageToSend);
System.out.println ("Envoyé au serveur : " + messageToSend);
out.println(messageToSend) : envoie le message au serveur.
System.out.println("Envoyé au serveur : " + messageToSend) : affiche le message
envoyé dans la console pour confirmation.
5. Réception de la réponse du serveur
// Réception du message de confirmation du serveur
String response = in.readLine();
System.out.println("Reçu du serveur : " + response);
String response = in.readLine() : lit la réponse du serveur.
System.out.println("Reçu du serveur : " + response) : affiche la réponse reçue
dans la console.
6. Gestion des exceptions
} catch (IOException e) {
// Gestion des exceptions d'entrée/sortie
e.printStackTrace();
catch (IOException e) : attrape et gère les exceptions liées aux entrées/sorties.
e.printStackTrace() : imprime la trace de la pile de l'exception pour aider au débogage.
serveur TCP
1. ServerSocket
o ServerSocket est utilisé pour créer un socket serveur qui écoute sur un port
spécifié pour les connexions entrantes des clients.
o ServerSocket serverSocket = new ServerSocket(port) : Crée un
ServerSocket qui écoute sur le port 1234.
2. Boucle d'écoute des connexions
o while (true) : Une boucle infinie qui permet au serveur d'accepter
continuellement des connexions de nouveaux clients.
o Socket clientSocket = serverSocket.accept() : Attend et accepte une
connexion entrante. Cette méthode bloque jusqu'à ce qu'une connexion soit
établie, puis retourne un objet Socket pour la communication avec le client.
3. Flux d'entrée et de sortie
o BufferedReader in = new BufferedReader(new
InputStreamReader(clientSocket.getInputStream())) : Initialise le
flux d'entrée pour lire les données envoyées par le client.
o PrintWriter out = new
PrintWriter(clientSocket.getOutputStream(), true) : Initialise le
flux de sortie pour envoyer des données au client.
4. Traitement des données
o String messageFromClient = in.readLine() : Lit le message envoyé par
le client.
o String response = "Message reçu" : Prépare la réponse à envoyer au
client.
o out.println(response) : Envoie la réponse au client.
5. Gestion des exceptions
o Utilise des blocs try-catch pour gérer les exceptions d'entrée/sortie, assurant
que les erreurs sont capturées et traitées de manière appropriée.
En résumé, le serveur TCP écoute les connexions sur un port spécifié, accepte les connexions
entrantes, lit les messages des clients, et envoie des réponses. Le cycle se répète pour chaque
nouvelle connexion, permettant au serveur de gérer plusieurs clients de manière séquentielle.