Développement d’application client/serveur

1/1
100%

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
Page 1 sur 1Lecteur de document UniversityLib

Développement d’application client/serveur

Informatique · notes