Développement d’application client/serveur

Page 1 sur 25Lecteur de document UniversityLib

Développement d’application client/serveur

Programming, Networking, Sockets · course

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