Documente Academic
Documente Profesional
Documente Cultură
EL JADIDA
Volume 1
2019 - 2020
2
Contents
1 Les Sockets 5
1.1 Introduciton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Généralité sur les sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Mise en pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.1 Récupérer l’adresse IP . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.2 Socket côté serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.3 Socket côté client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 TP 1 : Socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5 Travail à rendre : chat multiutilisateurs avancé . . . . . . . . . . . . . . . 10
3
4 CONTENTS
Chapter 1
Les Sockets
1.1 Introduciton
Une socket est un mécanisme de communication permettant d’utiliser l’interface de
transport (TCP-UDP). Introduit dans Unix dans les années 80.
Un socket est un point de terminaison d’une communication bidirectionnelle, c’est-à-dire
entre un client et un serveur en cours d’exécution sur un réseau donné. Les deux sont liés
par un même numéro de port TCP de sorte que la couche puisse identifier la demande
de partage de données.
Une socket est un moyen de partager des données en réseau et elle se manipule comme
un fichier.
Principe de fonctionnement : 3 phases - illustration ci-dessous avec TCP :
2. le client se connecte à la socket serveur ; deux sockets sont alors crées : une ”socket
client”, côté client, et une ”socket service client” côté serveur. Ces sockets sont
connectées entre elles.
3. le client et le serveur communiquent par les sockets. L’interface est celle des fichiers
(read, write). La socket serveur peut accepter de nouvelles connexions
• Utiliser un port.
5
6 CHAPTER 1. LES SOCKETS
• Points communs
Cette classe n’a pas de constructeur, pour pouvoir avoir une instance de cette classe on
a besoin des méthodes de classe.
Exemple :
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
Résultat
Mon adresse est : DESKTOP-70FPU48/192.168.205.2
L'adresse de serveur google est : www.google.com/172.217.18.228
On obtiendra ensuite une ”socket” associée à cet objet, en utilisant la méthode accept :
Socket soc = sersoc.accept();
On pourra ensuite lire classiquement des informations sur ce flux, comme nous avons
appris à le faire précédemment. Par exemple, on pourra lire de simples lignes de texte,
en créant un objet de type BufferedReader :
BufferedReader lecteur = new BufferedReader (new InputStreamReader (flux)) ;
Chaque ligne sera lue par une instruction de la forme (message étant de type String) :
8 CHAPTER 1. LES SOCKETS
message = lecteur.readLine() ;
Pour ”émettre” sur cette socket, on lui associera un flux de type OutputStream par:
OutputStream flux = soc.getOutputStream() ;
Comme ici nous avons prévu que le serveur ”lise” des lignes de texte, nous construirons
sur cette socket un objet de type OutputStreamWriter :
OutputStreamWriter sortie = new OutputStreamWriter (flux) ;
sur lequel il nous suffira d’”écrire” les lignes voulues par des instructions telles que :
sortie.write (.....) ;
Voici un programme très simple se contentant d’envoyer une ligne de texte au serveur
précédent :
import java.net.* ;
import java.io.* ;
1.4. TP 1 : SOCKET 9
1.4 TP 1 : Socket
Exercice 1
Modifier les deux programmes précédents de telle sorte que le serveur envoi un accusé de
réception au client.
Exercice 2
Développer une application client/serveur. Le client transmet un nombre entier au
serveur, ensuite le serveur calcul son factoriel et retransmet le résultat au client.
Exercice 3
Réaliser une application permettant à deux programmes (un client et un serveur) de
discuter entre eux au tac’o’tac, c’est à dire que le client ne pourra pas envoyer des messages
successifs au serveur, ce sera un message chacun l’un après l’autre.
NB : Pour faire un programme permettant l’envoi de plusieurs messages simultanés, il
faudra utiliser les threads.
10 CHAPTER 1. LES SOCKETS
Exercice 4
Réaliser une application de chat multiutilisateurs :
Cette application devra au moins permettre un dialogue entre deux utilisateurs, entre
un utilisateur et un groupe, entre un utilisateur et des groupes, entre un utilisateur et tous
les groupes, entre un utilisateur et tous les groupes sauf certains (utilisateurs ou groupes).
Elle devra aussi permettre facilement un échange en aparté, ainsi que la participation
simultanée à plusieurs groupes de discussion.
1.5. TRAVAIL À RENDRE : CHAT MULTIUTILISATEURS AVANCÉ 11
Elle offrira un mécanisme permettant de savoir qui est présent sur le réseau, sa disponi-
bilité. L’entrée dans un groupe de discussion sera signalée aux autres membres de ce
groupe.