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]