Ressources informatiques

Ressources informatiques

Ressources informatiques

Créer un client TCP en Java

Objectif : Créer une classe client TCP permettant de communiquer avec le serveur TCP minimal sous Linux.

Téléchargez Eclipse.

Créer la classe ClientTcp

Documentation : API Java

Le code de la classe ClientTcp :

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.nio.ByteBuffer;

public class ClientTcp {
    private Socket socketClient = null;
    private InputStream lecteur = null;
    private OutputStream ecrivain = null;

    public ClientTcp(String nomServeur, int portServeur)  throws IOException {
        socketClient = new Socket(nomServeur, portServeur);
        ecrivain = socketClient.getOutputStream();
        lecteur = socketClient.getInputStream();
     }

    public void finalize()  throws IOException{
        lecteur.close();
        ecrivain.close();
        socketClient.close();
    }

    public void emettre(ByteBuffer requete)  throws IOException {
        ecrivain.write(requete.array());
        ecrivain.flush();
    }

    public void recevoir(ByteBuffer reponse) throws IOException {
         lecteur.read(reponse.array());
    }
 }

Ecrire le programme de test de la classe ClientTcp

Je transmets la requête a au serveur qui retourne le caractère suivant ou ! en cas d'erreur.

package clientTCP;

import java.io.IOException;
import java.nio.ByteBuffer;

public class TestClientTcp {

    public static void main(String[] args) {
        int port = 50000;

        // Créer les zones mémoires pour la requête et la réponse
        ByteBuffer bufferRequete = ByteBuffer.allocate(1);
        ByteBuffer bufferReponse = ByteBuffer.allocate(1);

        try {
            // Effectuer la connexion
            ClientTcp clientTcp = new ClientTcp("192.168.1.101",  port);

            // Créer la requête
            byte requete = (char)'a';
            bufferRequete.put(requete);
            System.out.println("Requete du client : " + (char)requete);

            // Emettre la requete
            clientTcp.emettre(bufferRequete);

            // Recevoir la réponse
            clientTcp.recevoir(bufferReponse);

            // Afficher le résultat
            System.out.println("Reponse du serveur : " + (char)bufferReponse.get());
        } catch (IOException e) {
            System.err.println("Echec de la communication réseau : " + e.getMessage());
        }
    }
}

Résultats d'exécution :

Requete du client : a
Reponse du serveur : b

Si le serveur n'est pas démarré :

Echec de la communication réseau : Connection refused: connect