Université Virtuelle Burkina Faso Licence Pure Developper L3
--------------------------------------------------------------------
Année : 2022-2023 Nom :
Enseignant : A. Razak TASSEMBEDO Prénom(s) :
Date :
Durée : 02H30
Examen de session normale
Question à Choix Multiple (entourer le . correspondant la bonne réponse)
1. Qu'est-ce qu'un socket en programmation réseau ?
A) Un type de fichier sur un système d'exploitation.
B) Un point de terminaison pour la communication entre deux machines.
C) Un protocole de communication.
D) Un langage de programmation.
2. Quel package Java est principalement utilisé pour la programmation réseau ?
A) java.io
B) java.net
C) java.util
D) java.nio
3. Quel est le rôle d'un numéro de port dans la programmation réseau ?
A) Identifier une machine sur un réseau.
B) Identifier une application spécifique sur une machine.
C) Chiffrer les données transmises.
D) Compresser les données transmises.
4. Quel protocole est utilisé par la classe Socket en Java pour une communication fiable ?
A) UDP
B) HTTP
C) FTP
D) TCP
5. Quelle méthode de la classe ServerSocket est utilisée pour accepter une connexion entrante ?
A) connect()
B) accept()
C) listen()
1
Université Virtuelle Burkina Faso Licence Pure Developper L3
--------------------------------------------------------------------
D) bind()
6. Que signifie "multi-threading" en programmation réseau ?
A) Utiliser plusieurs serveurs pour une application.
B) Gérer plusieurs connexions clients simultanément dans des threads séparés.
C) Envoyer des données sur plusieurs ports simultanément.
D) Utiliser plusieurs langages de programmation pour une application.
7. Quelle interface Java doit être implémentée pour créer un thread ?
A) Runnable
B) Serializable
C) Cloneable
D) Comparable
8. Quelle méthode doit être redéfinie lors de l'implémentation de l'interface Runnable ?
A) start()
B) run()
C) execute()
D) init()
9. Quel protocole est utilisé par la classe DatagramSocket en Java ?
A) TCP
B) HTTP
C) UDP
D) FTP
10. Quel est l'état initial d'un thread en Java après sa création avec new mais avant l'appel à
start() ?
A) Runnable
B) Blocked
C) Waiting
D) New
11. Dans une application serveur multi-threadée, quelle structure de données est recommandée
pour gérer en toute sécurité les connexions clients ?
A) ArrayList
B) HashSet
C) Vector
D) Collections.synchronizedSet
12. Quel est le principal avantage de l'utilisation de BufferedReader et PrintWriter pour la
communication réseau en Java ?
2
Université Virtuelle Burkina Faso Licence Pure Developper L3
--------------------------------------------------------------------
A) Ils sont plus rapides que DataInputStream et DataOutputStream.
B) Ils fournissent une gestion des flux de caractères efficace et facile à utiliser.
C) Ils permettent la sérialisation des objets.
D) Ils sont les seuls flux disponibles pour la programmation réseau.
13. Quel est l'objectif principal de la méthode shutdownOutput() de la classe Socket en Java ?
A) Fermer la connexion de socket.
B) Interrompre un thread de socket.
C) Indiquer que l'application a terminé d'envoyer des données.
D) Redémarrer la sortie de la connexion socket.
14. Quelle exception est généralement levée lorsqu'une opération de socket échoue ?
A) IOException
B) NullPointerException
C) ArrayIndexOutOfBoundsException
D) ClassNotFoundException
15. Pourquoi est-il important de fermer les sockets après utilisation ?
A) Pour libérer les ressources système.
B) Pour compresser les données transmises.
C) Pour sécuriser la communication.
D) Pour accélérer la transmission des données.
Exercice
En se basant sur le code ci-après, répondez aux questions suivantes :
1. Que fait ce client lorsqu'il se connecte au serveur ?
2. Pourquoi utilise-t-on BufferedReader pour userInput ?
3. Comment le client traite-t-il les messages du serveur ?
4. Proposez une modification pour que le client affiche un message de bienvenue avant
de commencer à lire les entrées de l'utilisateur.
3
Université Virtuelle Burkina Faso Licence Pure Developper L3
--------------------------------------------------------------------
import java.io.*;
import java.net.*;
public class SimpleClient {
public static void main(String[] args) {
try (Socket socket = new Socket("localhost", 6789)) {
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedReader userInput = new BufferedReader(new InputStreamReader(System.in));
String userMessage;
while ((userMessage = userInput.readLine()) != null) {
out.println(userMessage);
String response = in.readLine();
System.out.println("Réponse du serveur : " + response);
} catch (IOException e) {
e.printStackTrace();