CHAPITRE4:
COMMUNICATIONS
BASÉES SUR LES SOCKETS
TCP/UDP
COMMUNICATION RESEAU
CHOISIR ENTRE TCP ET UDP
ntroduction
• Les sockets sont les terminaisons des connections entre
machines hôtes et peuvent être utilisées pour envoyer et
recevoir des données.
• Il y a deux types de sockets: socket serveur et socket clien
• Socket serveur pour recevoir les reqûetes des clients.
• Socket client peut être utilisé pour l’envoi et la réception
des données.
Socket : Point de terminaison pour la communication. Un socket peu
être vu comme une interface permettant de lire ou écrire des
données entre deux entités (locales ou distantes).
ypes de sockets :Stream socket (SOCK_STREAM) : Utilise TCP (orienté
onnexion, fiable).
Datagram socket (SOCK_DGRAM) : Utilise UDP (sans connexion, non
fiable).
Raw socket (SOCK_RAW) : Donne accès aux paquets bruts, souvent
pour des usages réseau avancés (nécessite des privilèges).
SOCKETS EN JAVA ?
Les BSD sockets (sockets Ber
BSD sockets UNIX sont une interface de
au dessus de TCP ou UDP programmation standard po
communication entre proce
utilisée dans de nombreux s
Une infrastructure puissante et d'exploitation, notamment l
flexible pour la programmation réseau systèmes UNIX et Unix-like (c
Linux). Elles permettent la
communication réseau (par
UDP, etc.) ou entre processu
locaux sur la même machin
En Java toutes les classes relatives aux sockets
sont dans le package [Link]
LE PACKAGE NET
• Des Exceptions
• Des entrées Sorties
• Des Sockets
• …...
Plusieurs hiérarchies de classes
DES TYPES DE SOCKETS
Object
ServerSocket DatagramSocket
HttpAwareServerSocket MulticastSocket
Socket
HttpSendSocket WrappedSocket
DES EXCEPTIONS
Exception
IOException
SocketException ProtocolException
UnknownHostException UnknownServiceException
BindException ConnectException
DES ENTRÉES SORTIES
Object
InputStream OutputStream
FileInputStream FileOutputStream
SocketInputStream SocketOutputStream
océdure de connexion avec Java
erveur commence par créer une ServerSocket Serveur
recevoir les demandes de connexion ServerSocket(port) A S
ServerSocket: ss p e
p r
l v
i e
nt c u
pplication a r
Client t
i
o
n
Procédure avec Java
1 Procédure de connexion avec
va
erveur se met en attente des demandes de
Serveur
nnexion
A S
ServerSocket: ss p e
p r
l v
[Link]() i e
nt c u
pplication a r
Client t
i
o
n
Procédure avec Java
Procédure de connexion avec
a
client demande une connexion à travers le port Serveur
ocié au service
A S
ServerSocket: ss p e
cket(‘Serveur’, port) p r
l v
[Link]() i e
nt c u
pplication a r
Client t
i
o
n
Procédure avec Java
1 Procédure de connexion avec
va
erveur crée une nouvelle socket qui sera l’une Serveur
extrémités de la connexion A S
ServerSocket: ss p e
cket(‘Serveur’, port) p r
l v
[Link]() i e
nt c u
pplication Socket: s a r
Client t
i
o
n
Procédure avec Java
1 Procédure de connexion avec
va
client obtient la socket qui est l’extrémité de la Serveur
onnexion côté client A S
ServerSocket: ss p e
p r
l v
[Link]() i e
nt c u
pplication Socket: s Socket: s a r
Client t
i
o
n
Procédure avec Java
1 Procédure de connexion avec
va
client et le serveur créent les InputStream et Serveur
tputStream associés aux deux sockets A S
ServerSocket: ss p e
p r
l v
[Link]() i e
nt c u
pplication Socket: s Socket: s a r
Client is is t
os os i
getInputStream o
[Link] n
tOutputStream
[Link]
Procédure avec Java
1 Procédure de connexion avec
va
client et le serveur commencent les échanges Serveur
données à travers les sockets (les InputStream et A S
tputStream) p e
ServerSocket: ss
p r
l v
[Link]() i e
nt c u
pplication Socket: s Socket: s [Link]() a r
Client is is t
os os i
[Link](int nb)
[Link]() o
n
[Link](int nb)
Procédure avec Java
1 Procédure de connexion avec
va
client et le serveur commencent les échanges Serveur
données à travers les sockets (les InputStream et A S
putStream) p e
ServerSocket: ss
p r
l v
[Link]() i e
nt c u
pplication a r
Client t
i
o
n
[Link]( )
Procédure avec Java
LES SOCKETS SERVEUR (JAVA)
• Une socket serveur est une instance de la classe
ServerSocket et peut être créee par l’un des ces
constructeurs:
ServerSocket(int port)
ServerSocket(int port, int backlog)
• port: numéro de port sur lequel le serveur se mettra à
l’écoute de requêtes de la part des clients.
• backlog: longeur maximum de la file des clients en
attente d’être servis (50 par default).
• Les sockets serveur peuvent être créees avec les
applications Java seulement, pas avec les applets.
LES MÉTHODES DES SOCKETS SERVEUR(JAVA)
• Socket accept()
Attend une requête de connexion. Le thread qu
exécute la méthode sera bloqué jusqu’à ce qu’une
requête soit reçue, à ce moment la méthode retourne une
socket client.
Il y a deux faits importants à noter à propos de la
méthode accept(). Le premier est que cette
méthode est bloquante. Le deuxième est que cette
méthode crée et retourne une instance de Socket.
• void close()
Arrête de recevoir des requêtes des clients.!
USAGE TYPIQUE DE SERVERSOCKET(JAVA)
• try {
ServerSocket s = new ServerSocket(port);
while (true) {
Socket incoming = [Link]();
«Traite un client»
[Link]();
}
[Link]();
} catch (IOException e) {
«Traite l’exception» }
LES SOCKETS CLIENT(JAVA)
• Une socket client est une instance de la classe Socket et
peut être obtenue de deux manières:
(1) Côté serveur, comme valeur retournée par la
méthode accept()
(2) Côté client en utilisant le constructeur
Socket(String host, int port)
host: l’adresse de la machine hôte
port: le numéro de port
LES MÉTHODES DES SOCKETS CLIENT(JAVA)
• getInputStream()
Retourne un objet InputStream pour recevoire les
données(bytes)
• getOutputStream()
Retourns un objet OutputStream pour envoyer des
données(bytes)
• close()
Ferme la socket( et par voie de conséquence la
connexion)