Développement d’application client/serveur

Introduction aux API sockets :

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

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…

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).

Exemple:

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
Ouverture active (côté « initiateur ») : (1/2)
Conception :
 Créer une socket localement (et éventuellement la
caractériser)
 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
 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 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
Sockets en mode non connecté:
Programmation en JAVA: (2/2)
Classe DatagramPacket
-Constructeurs pour l’envoi
-Constructeurs pour la réception

Quitter la version mobile