0% ont trouvé ce document utile (0 vote)
42 vues3 pages

Corrigé examen Programmation réseaux CSIA

Le document présente un corrigé type d'examen pour un cours de programmation réseaux, incluant des questions à choix multiples sur la communication dans les applications distribuées et des exercices pratiques sur la création d'un client et d'un serveur en Java. Il aborde des concepts tels que les sockets, RMI, et la gestion de plusieurs clients avec des threads. Des erreurs de code sont également identifiées et corrigées pour assurer le bon fonctionnement de l'application.

Transféré par

informatiquemath022
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
42 vues3 pages

Corrigé examen Programmation réseaux CSIA

Le document présente un corrigé type d'examen pour un cours de programmation réseaux, incluant des questions à choix multiples sur la communication dans les applications distribuées et des exercices pratiques sur la création d'un client et d'un serveur en Java. Il aborde des concepts tels que les sockets, RMI, et la gestion de plusieurs clients avec des threads. Des erreurs de code sont également identifiées et corrigées pour assurer le bon fonctionnement de l'application.

Transféré par

informatiquemath022
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Ain Témouchent -Belhadj Bouchaib

Faculté des Sciences et de la Technologie


Département de Mathématiques et Informatique

1ere Année master CSIA Programmation réseaux 2022/2023

Corrigé type examen

Exercice 1 : (8 pts) Choisir la (ou les) bonne(s) réponse(s) :


1. Pour programmer la communication dans une application distribuée on utilise :
a. Ajax et JQuery.
b. les flux d’entrées/sorties non bloquantes.
c. Les sockets et RMI.
2. L’instruction : ServerSocket ss=new ServerSocket(‘3000’) ; signifie :
a. Créer un socket de communication coté serveur sur le port 3000.
b. Créer un socket de communication coté client sur le port 3000.
c. Créer un socket de connexion coté serveur sur le port 3000.
d. Créer un socket de connexion coté client sur le port 3000.
3. L’instruction : Socket s= [Link]() ; permet de :
a. Créer un socket coté serveur.
b. Créer un socket coté client.
c. Lire les messages arrivés dans le socket.
4. Pour pouvoir gérer plusieurs clients dans un programme distribués avec les sockets :
a. On utilise les Threads.
b. On exécute plusieurs serveurs.
c. On utilise les flux d’entrées/sorties non bloquantes.
5. Si on exécute le client et le serveur dans deux machines différentes:
a. On doit préciser l’adresse IP du client dans le code serveur.
b. On doit préciser l’adresse IP du serveur dans le code client.
c. On doit préciser l’adresse IP "localhost" dans le code serveur et client.
6. Quelles informations sont-elles nécessaires à un client pour créer une
"DatagramPacket" à destination d'un serveur ?
a. L’adresse IP du client ainsi son numéro de port.
b. L’adresse IP du serveur ainsi son numéro de port.
c. La longueur des données à envoyer.
7. Soit un objet quelconque Obj qui est une instance de la classe A qui n'hérite pas
d'une autre classe et qui implémente l'interface AInt. En Java RMI, il est très facile de
transformer cet objet en un objet distribué. Pour cela il suffit de :
a. Faire que la classe A implémente aussi l'interface Remote.
b. Faire que la classe A implémente l'interface Serializable, puis écrire cet objet dans
un annuaire RMI.
c. Créer un proxy de A. Ce proxy hérite de UnicastRemoteObject et implémente
l'interface AInt qui hérite de l'interface Remote.
8. L’enregistrement d’un Objet Distribué (ou Objet Distant) dans l’annuaire peut
s’effectuer à l’aide de la méthode :
a. lookup()
b. bind()

1/3
Université Ain Témouchent -Belhadj Bouchaib
Faculté des Sciences et de la Technologie
Département de Mathématiques et Informatique

1ere Année master CSIA Programmation réseaux 2022/2023

Exercice 2 : (12 pts)


1. Le serveur est la classe program2 (il contient le ServerSocket) le client est la classe
program1. (1 pts)
2. Que fait cette application ? le client envoie deux nombre au serveur via le socket. Le
serveur récupère ces deux nombre, calcule leur pgcd et renvoie le résultat au client
via le socket, ce dernier le récupère et l’affiche à l’écran. (2 pts)
3. Cette application contient des erreurs qui empêchent son exécution. Trouver et
corriger ces erreurs ? (3 pts)
import [Link].*;
import [Link].*;
public class program1
{ int x=15; int y=6;
public static void main (String args[]) throws IOException
{ Socket socket = new Socket("localhost", 3000);
BufferedReader in = new BufferedReader(new InputStreamReader([Link]()));
PrintWriter out= new PrintWriter(socket. getOutputStream (),true);
[Link](x);
[Link](y);
String resultat=[Link]() ;
[Link](resultat) ;
[Link]() ; [Link]() ;
[Link]() ;
}}

import [Link].*;
import [Link].*;
public class program2
{ int port = 3000 ;
public static void main (String args[]) throws IOException
{ ServerSocket sersoc= new ServerSocket(port) ;
Socket socket = [Link]();
BufferedReader in = new BufferedReader(new InputStreamReader([Link]()));
PrintWriter out= new PrintWriter([Link](),true);
int x=[Link]();
int y=[Link]();
while (x != y)
{ if(x>y) x=x-y;
else y=y-x; }
[Link](‘le résultat = ’+x );
[Link]() ; [Link]() ;
[Link]() ; [Link]() ;
}}

2/3
Université Ain Témouchent -Belhadj Bouchaib
Faculté des Sciences et de la Technologie
Département de Mathématiques et Informatique

1ere Année master CSIA Programmation réseaux 2022/2023

4. Qu’est-ce que nous devons changer si on exécute le client est le serveur dans deux
machines différentes ? (2 pts)
le client doit préciser l’adresse IP du serveur lors de la connexion (au lieu de mettre
localhost) : Socket socket = new Socket(adresseIP_serveur, port);
5. Modifier l’application pour pouvoir gérer plusieurs clients ? (4 pts)
- Le client ne change pas.
- Dans le serveur on doit utiliser les threads.
import [Link].*;
import [Link].*;
public class program2
{ int port = 3000 ;
public static void main (String args[]) throws IOException
{ ServerSocket sersoc= new ServerSocket(port) ;
While (true){
Socket socket = [Link]();
new thread_seveur(socket).start(); }
[Link]() ;
}}

import [Link].*;
import [Link].*;
public class thread_serveur
{ Socket soket;
public thread_serveur(Socket sok)
{socket=sok;}
Public void run()
{
BufferedReader in = new BufferedReader(new InputStreamReader([Link]()));
PrintWriter out= new PrintWriter ([Link](),true);
int x=[Link]();
int y=[Link]();
while (x !=y)
{ If(x>y) x=x-y;
else y=y-x; }
[Link](‘le résultat = ’+x);
[Link]() ; [Link]() ; [Link]() ; }

3/3

Vous aimerez peut-être aussi