Java : Client/Serveur

Exercice 1:

Créer deux programmes (client, serveur). Le client envoie une lettre au processus du serveur qui va le remplacer par la lettre précédente de l’alphabet et envoie le résultat au client. Le client affiche la lettre qu’il a reçu, puis tous les processus se terminent.

Solution

Classe server.java

public class server {

    public static void main(String[] args) throws IOException {
        ServerSocket  serveur=new ServerSocket(16500);
        Socket cli=serveur.accept();
        System.out.println("Accepted");
        DataInputStream din = new DataInputStream(cli.getInputStream());

          char ch =din.readChar();
          System.out.println("La lettre reçue est" + ch);
          ch--;
    DataOutputStream dout = new DataOutputStream(cli.getOutputStream());
          dout.writeChar(ch);
          dout.flush();
    }
}

Classe client.java

public class client {

    
    public static void main(String[] args) throws IOException {
        Socket socketClient = new Socket("127.0.0.1",16500);
     DataOutputStream output = new DataOutputStream(socketClient.getOutputStream());
        Scanner c = new Scanner(System.in);
        System.out.println("Entrer une lettre");
        char ch= c.nextLine().charAt(0);
        output.writeChar(ch  );
        output.flush();
        DataInputStream input = new DataInputStream(socketClient.getInputStream());
        System.out.println(input.readChar());
    }
    
}
[collapse]

Exercice 2:

Écrire un jeu dans lequel le serveur génère un nombre aléatoire entre 0 et 100, le client va essayer de le trouver en cinq essais au maximum. Si le client trouve le nombre les deux processus se terminent sinon le serveur lui envoie un message « Vous avez perdu ».

Solution

Classe server.java

public class server {
    public static void main(String[] args) throws IOException {
        Socket socketClient = new Socket("127.0.0.1",16500);
        DataOutputStream dout = new DataOutputStream(socketClient.getOutputStream());
        DataInputStream din = new DataInputStream(socketClient.getInputStream());        
        Scanner c = new Scanner(System.in);
         int nessais=0;
         String msgrecu="";
        while(nessais<5){
            System.out.println("Entrer un nombre");
            int n=c.nextInt();
            dout.writeInt(n);
            dout.flush();
            msgrecu=din.readUTF();
            if(msgrecu.equals("==> Gagne")){
                System.out.println(msgrecu);
                break;
            }else{
                System.out.println(msgrecu); 
                nessais++;   
            }
        }
            if(nessais==5){
                System.out.println(din.readUTF());
            }
            socketClient.close();
    }
}

Classe client.java

public class client {
 public static void main(String[] args) throws IOException {
        Random rnd = new Random();
       int mystere = rnd.nextInt(1,10);
       int nessais = 0;
        ServerSocket  serveur=new ServerSocket(16500);
        Socket cli=serveur.accept();
        System.out.println("Jeu commencé"+mystere);
        DataInputStream din = new DataInputStream(cli.getInputStream());
        DataOutputStream dout = new DataOutputStream(cli.getOutputStream());
        String message="";
        while(nessais<5){
            int n =din.readInt();
            System.out.println("Le nombre reçu est" + n);
            if (n == mystere)
            {
              message="==> Gagne";
              nessais=20;
            }
            else if (n < mystere)
            {
               message="==> Trop petit";
            }
            else
            {
               message="==> Trop grand";
            }
            dout.writeUTF(message);
            dout.flush();
             nessais++;
        }
          if(nessais==5){
             dout.writeUTF("Vous avez dépassé le nombre limite d'essais");
             dout.flush();
          }
          serveur.close();
          cli.close();
    }
    
}
[collapse]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *