Académique Documents
Professionnel Documents
Culture Documents
Department of
Computer Science
Network Programming -Master 1 2022-23-
Series n° 4
Exercice 1 : 1 serveur- 1 client
Dans cet exercice, vous devez implémenter un programme client-serveur pour la communication par
sockets en utilisant la classe Socket de Java. Nous avons la classe Car avec les champs suivants :
model, price et year. Cette classe doit implémenter l'interface Serializable.
import java.io.Serializable;
1. Écrivez un programme serveur qui écoute sur le port 1234. Le serveur doit être capable de
recevoir un objet Car du client, l'afficher dans la console, puis envoyer un objet Car en réponse
au client. Le serveur doit s'arrêter après avoir traité une seule requête.
2. Écrivez un programme client qui se connecte au serveur sur le port 1234, envoie un objet Car au
serveur, affiche la réponse dans la console, puis se déconnecte.
3. Testez votre programme en exécutant d'abord le serveur, puis en exécutant le client. Assurez-
vous que le client reçoit la réponse correcte du serveur.
4. Modifiez le programme client pour qu'il envoie plusieurs objets Car au serveur, puis affiche la
réponse pour chaque objet dans la console. Assurez-vous que le serveur traite chaque requête
correctement et renvoie la réponse appropriée.
Nous voulons écrire le code source des deux classes ServerDNS et ClientDNS permettant de gérer un
service DNS. Nous voulons ensuite que le ServerDNS puisse gérer en temps réel des requêtes venant
de plusieurs ClientDNS. Pour cela, nous devons ajouter un thread ServiceDNS dans laquelle nous
introduisons la table DNS. Le ServerDNS est à l’écoute des requêtes venant des ClientDNS. Et quand
une nouveau se connecte, un nouveau thread ServiceDNS est créée et la socket correspondante est
envoyée au ServiceDNS pour qu’il communique avec le Client.
Exercice 3 : UDP
Écrire un client et un serveur communiquant en UDP de sorte que le client envoie un texte au serveur
qui le met en majuscule et le lui retourne.
Correction
Exercice 1
package serie4;
import java.io.*;
import java.net.*;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
objectOutputStream.close();
objectInputStream.close();
socket.close();
}
}
}
package serie4;
import java.io.*;
import java.net.*;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
objectInputStream.close();
socket.close();
serverSocket.close();
}
}
}
Exercice 2
package serie4;
import java.io.*;
import java.net.*;
package serie4;
import java.io.*;
import java.net.Socket;
public class ServiceDNS extends Thread {
static String [][] listDNS = {{"142.250.217.78", "google.com"},
{"142.251.33.69" , "gmail.com"},
{"40.89.244.232" , "duckduckgo.com"},
{"157.240.3.35" , "facebook.com"},
{"216.58.206.238" , "youtube.com"},
{"66.211.175.229" , "ebay.com"},
};
Socket sclient;
public ServiceDNS(Socket s) {
sclient = s;
}
if (adresse !=null)
bos.println(adresse); // envoyer l'adresse au
client
else System.out.println("adresse non trouvee! vérifiez
l'url ");
bis.close(); // fermer les flux et la socket
bos.close();
sclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package serie4;
import java.io.*;
import java.net.Socket;
// Read address
String adr = bis.readLine();
System.out.println("l'adresse de :" + url + " est : " + adr);
bis.close();
bos.close();
socket.close();
} catch (IOException e) {
System.err.println(e);
}
}
}
Exercice 3