Développement d’application client/serveur
Hatem Ben Sta 2 ING 2019-2020
Chapitre 4 Introduction aux API sockets
2
Introduction:
3
Sockets:
Une socket est:
Un point d'accès aux couches réseau
Liée localement à un port: Adressage de l'application sur le réseau : son
couple @IP:port
Elle permet la communication avec un port distant sur une machine
distante : c'est-à-dire avec une application distante
4
Illustration d’API socket: (2)
IGMP : Internet Group Management Protocol
5
Illustration d’API socket: (3)
6
Différents types de sockets
Stream Sockets (TCP) établir une communication en mode connecté si connexion interrompue : applications informées Exemples de services : ftp, http, smtp, telnet, BGP…
Datagram Sockets (UDP) établir une communication en mode non connecté données envoyées sous forme de paquets indépendants de toute connexion. Plus rapide, moins fiable que TCP
Exemples de services : snmp, RPC, tftp, dhcp, dns,
RIP…
7
La notion de « port »:
Un service rendu par un programme serveur sur une machine
est accessible par un port.
Un port est identifié sur une machine par un nombre entier (16
bits).
8
Publicité
Exemple:
9
Processus de Sockets:
10
Gestion du parallélisme sur le serveur:
11
Sockets en mode connecté:
Principe -flot bidirectionnel d’octets transférés
de façon fiable (ni perte, ni duplication) et ordonnée entre deux locuteurs préalablement « connectés » = = > service TCP utilisé -trois phases nécessaires à programmer :
établissement de connexion:
• Un initiateur (l’entité « client » : ouverture active) • Un répondant (l’entité « serveur » : ouverture passive)
transfert de données:
• Requêtes, réponses (selon le protocole applicatif)
libération de connexion
• Bi partie
12
Sockets en mode connecté:
Ouverture passive (côté « répondant ») : (1/2) Conception : Dédier une socket destinée à intercepter des demandes
d’établissement de connexion
= = > socket générique d’écoute
Caractériser cette socket en terme de communication : -au moins un numéro de port (associé au service) -éventuellement une adresse IP (interface cible) Lui permettre de scruter et stocker les demandes de
connexions entrantes avant acceptation
-paramétrer la taille de la FIFO des requêtes
13
Sockets en mode connecté:
Ouverture passive (côté « répondant ») : (2/2) Programmation en JAVA : Classe ServerSocket Trois constructeurs possibles:
-numéro_port (obligatoire) -Et taille maximale FIFO -Et Adresse IP
14
Sockets en mode connecté:
Ouverture active (côté « initiateur ») : (1/2) Conception : Créer une socket localement (et éventuellement la
caractériser)
Publicité
L’utiliser pour demander l’établissement d’une connexion
TCP avec un processus distant « répondant » Spécifier ce dernier grâce aux caractéristiques de communication de sa socket générique d’écoute :
-numéro de port -Adresse IP
15
Sockets en mode connecté:
Ouverture active (côté « initiateur ») : (2/2) Programmation en JAVA Classe Socket Quatre constructeurs possibles
-@sse IP ou nom_host distant ET numéro_port
distant (obligatoires)
-Et @sse IP ou nom_host local ET numéro_port
local
16
Sockets en mode connecté:
Acceptation d’ouverture (côté « répondant ») : (1/2) Conception : Le processus doit être bloqué tant qu’aucune demande de
connexion ne lui parvient sur la socket générique d’écoute :
= = > fonction bloquante
L’acceptation consiste à considérer positivement une
demande reçue et à créer localement une socket spécifique dédiée à supporter l’échange de données sur cette connexion particulière
= = > Cette socket représente l’extrémité « serveur »
de la connexion TCP initiée par un « client » distant.
17
Sockets en mode connecté:
Acceptation d’ouverture (côté « répondant ») : (2/2) Programmation en JAVA Classe ServerSocket Méthode accept
18
Sockets en mode connecté:
Transfert de données (des deux côtés) : Conception : EMISSION : Revient à Ecrire/Envoyer un message (x
octets) sur la connexion
RECEPTION : Revient à Lire/Recevoir un message (x
octets) sur la connexion
Programmation en JAVA Classe Socket Emission : méthode getInputStream Réception : méthode getOuputStream
19
Sockets en mode connecté: Libération de connexion (des deux côtés) : Conception : Fermeture totale :revient à fermer l’extrémité d’une connexion : = = > émission et réception deviennent impossibles
Publicité
Fermeture partielle : possible selon les technologies
= = > émission ou réception devient impossible
Programmation en JAVA: Classe Socket méthode close méthodes shudownInput et shutdownOutput
20
Sockets en mode non connecté:
Principe: Datagrammes individuels transférés
-de façon non fiable, du « mieux »possible -pas de connexion entre émetteur(s) et récepteur = = > service UDP utilisé
Une seule phase à programmer :(transfert de données)
-envoi et réception possibles (de requêtes et de réponses
selon le protocole applicatif)
-détermination de l’expéditeur par le récepteur; Il peut
ensuite devenir destinataire. Libération de port après usage
21
Sockets en mode non connecté:
Création et caractérisation d’une socket Conception : Créer une socket localement Le caractériser si réception de données prévue: Numéro de port
prédéfini côté « serveur »
Programmation en JAVA Classe DatagramSocket Trois constructeurs possibles
-sans paramètre : port anonyme local -avec no_port local -et @sse IP_locale
22
Sockets en mode non connecté: Transfert de données (des deux côtés) : Conception : EMISSION : Envoyer X octets vers une socket distante dont
on précise les caractéristiques
RECEPTION : Recevoir X octets provenant d’une socket distante dont on récupère les caractéristiques pour en déterminer l’origine.
Programmation en JAVA: (1/2) Classe SocketDatagram
-Emission : méthode send -Réception : méthode receive -Gestion d’association : méthodes connect et disconnect
23
Programmation en JAVA: (2/2) Classe DatagramPacket
-Constructeurs pour l’envoi -Constructeurs pour la réception
24
Fin du Chapitre
25