Programmation R seaux Illustration : Les Sockets en Java .


23 views
Uploaded on:
Description
Programmation Réseaux Illustration : Les Sockets en Java. Anne-Marie Déry. À travailler seuls. Concepts généraux. Mise en œuvre Java. Réseau et département SI. Couches Réseaux : protocoles TCP – UDP Programmation Réseaux Sockets Java et C Introduction aux applications réparties
Transcripts
Slide 1

Programmation Réseaux Illustration : Les Sockets en Java Anne-Marie Déry À travailler seuls Concepts généraux Mise en œuvre Java

Slide 2

Réseau et département SI Couches Réseaux : protocoles TCP – UDP Programmation Réseaux Sockets Java et C Introduction aux applications réparties Programmation standard Composants Expériences Industrielles Administration et sécurité des réseaux Réseaux sans fil Applications Temps Réel SI 4 AL IAM et SSR

Slide 3

Questions préliminaires Différences entre les protocoles de transport TCP et UDP ? Use des adresses Internet ? Use des ports ? Programmation attachments : avantages et inconvénients Client : ? Serveur : ? Serveur de noms ? (DNS, LDAP) ?

Slide 4

Architecture customer serveur Mode de correspondence qu\'un hôte établit avec un autre hôte qui fournit un benefit quelconque Serveur Client opération send ask for application send answer « protocole d\'application » marshaling

Slide 5

Comment cela fonctionne au niveau du réseau Identification de la machine qui abrite le serveur standard le customer Identification du serveur sur la machine Canal de correspondence entre le serveur et le customer Construction de la trame réseau Echange du protocole d\'application

Slide 6

Sockets Outil de correspondence pour échanger des données entre un customer et un serveur Canaux de correspondence (descripteur d\'entrée foray dans lesquels on écrit et sur lesquels on lit) Gestion similaire des entrées fights standard (écran, piano) et des fichiers

Slide 7

Un attachment : une entrée foray dédiée au réseau Gestion similaire des entrées forays standard (écran, clavichord) et des fichiers En fight (ex. System.out) : java.io.PrintStream (ou PrintWriter ) use un flot dirigé vers une foray java.io.OutputStream En entrée (ex. System.in) : java.io.InputStream (ou BufferedReader )

Slide 8

Plus précisément un attachment Plusieurs sorts de attachments : pour la correspondence standard flot de données -fortement connectée -synchrone -sort customer serveur pour correspondence réseau standard message -en mode datagramme -en mode déconnecté pour correspondence réseau standard dissemination

Slide 9

Exemples d\'applications Un serveur d\'Echo Un exemple : le benefit SMTP Demande de references Diffusion de references

Slide 10

Sockets en Java ? BSD attachments UNIX au dessus de TCP ou UDP Une foundation puissante et adaptable pour la programmation réseau En Java toutes les classes relatives aux attachments sont dans le bundle java.net

Slide 11

Le Package net Des Exceptions Des entrées Sorties Des Sockets … ... Plusieurs hiérarchies de classes

Slide 12

Des sorts de Sockets Object ServerSocket DatagramSocket MulticastSocket Socket

Slide 13

Des special cases Exception IOException SocketException ProtocolException UnknownHostException UnknownServiceException BindException ConnectException

Slide 14

Des Entrées Sorties Object OutputStream FileOutputStream ObjectOutputStream InputStream FileInputStream ObjectInputStream FilterInputStream DataInputStream FilterOutputStream DataOutputStream

Slide 15

Autres Classes Object InetAdress DatagramPacket SocketImpl PlainSocketImpl

Slide 16

Java.net.InetAddress : nommage La classe InetAddress 2 constructeurs : un standard défaut qui crée une adresse vide (cf la méthode acknowledge sur Socket) un qui prend le nom de la machine hôte et l\'adresse IP de la machine. Des accesseurs en address : pour récupérer l\'adresse IP d\'une machine ( getByName , getAllByName ), des informations sur la machine hôte ( getLocalHost , getLocalAddress , getLocaName ) Des comparateurs : égalité ( approaches ) et sort d\'adresse ( isMulticastAddress ) … ..

Slide 17

Communication Client Serveur traditionnelle Fortement connectée TCP

Slide 18

TCP fournit un transfert fiable, conservant l\'ordre de transfert des octets ("pipe") entre le customer et le serveur Point de vue application Flot de requêtes du customer vers le Serveur Client opération Ouvrir association req1 application req2 req3 reqn Fermer la association

Slide 19

make attachment, interface with hostid , port= x make attachment, port= x , for approaching solicitation: clientSocket = Socket() welcomeSocket = ServerSocket() TCP association setup sit tight to incoming association ask for connectionSocket = welcomeSocket.accept() send ask for utilizing clientSocket read ask for from connectionSocket compose answer to connectionSocket read answer from clientSocket close connectionSocket close clientSocket Interaction Client/server : attachment TCP Serveur (s\'exécutant sur l\'hôte) Client

Slide 20

Scénario d\'un serveur pour un customer Créer le attachment de correspondence avec le customer Attente de données sur le flux d\'entrée Réception et Analyze des données en entrée Calcul Construction de la réponse Ecriture sur le flux de fight Fermer le attachment de correspondence

Slide 21

Scénario d\'un customer Créer le attachment de association avec le serveur Attendre que la association soit établie Récupérer la attachment de correspondence Préparer la requête l\'envoyer sur le flux de foray Attendre des données sur le flux d\' entrée les lire et les traiter Fermer le attachment

Slide 22

TCP et Sockets 2 classes : Socket et ServerSocket ( java.net bundle) pour les canaux de correspondence Classes pour le flot de données XInputStream et XOutputStream

Slide 23

Transfert de données Connection + « Marshalling »

Slide 24

Accepter les associations Dans un serveur ? Créer un objet attachment pour écouter les demandes de association sur le numéro de port associé au benefit Créer un objet attachment pour accepter une association d \'un customer cet objet servira pour tous les transferts d \'information de ce customer vers le serveur

Slide 25

Dans un serveur ? Accepter les associations ServerSocket myService; attempt { myService = new ServerSocket(PortNumber ); } get (IOException e) {System.err.println(e);} Création d\'un objet attachment pour écouter et accepter les associations des customers Socket clientSocket = invalid; attempt {clientSocket = myService.accept ();} get (IOException e) {System.err.println(e); }

Slide 26

Demander à se Connecter = ouvrir un attachment Dans un customer identifier la machine à laquelle on veut se connecter et le numéro de port sur lequel tourne le serveur implique de créer un attachment pour cette correspondence

Slide 27

Se connecter Comment ouvrir un attachment ? Dans un customer Socket myClient; attempt { myClient = new Socket("Machine name", PortNumber); } get (IOException e) { System.out.println(e); } Machine name : machine à laquelle on veut se connecter PortNumber port sur lequel tourne le serveur (> 1023)

Slide 28

Comment envoyer une data ? Côté customer : pour envoyer une requête au serveur Côté serveur : pour envoyer une réponse au customer 1 Créer un flux de foray pour le attachment pour écrire l\'information 2 Constituer le contenu des données à émettre (transformer entiers, pairs, caractères, objets en lignes de texte)

Slide 29

Côté Serveur Pour envoyer des informations au customer Exemple d\'entrée fight DataOutputStream : écrire des sorts de données primitifs; output= new DataOutputStream (clientSocket.getOutputStream ());

Slide 30

Côté Client Côté customer : pour envoyer une data au serveur Autre exemple d\'entrée fight PrintStream pour afficher des valeurs des sorts de base (compose et println) PrintStream yield; attempt {output = new PrintStream (myClient.getOutputStream () ;} get (IOException e) {System.err.println(e);} … ..

Slide 31

Comment recevoir de l \'information ? Côté serveur : on doit lire la requête du customer Côté customer : on doit recevoir une réponse du serveur 1 Créer un flux d \'entrée pour le attachment et lire l \'information sur le flux 2 Reconstituer les données émises ( entiers, copies, caractères, objets) à partir des lignes de texte reçues

Slide 32

Côté Serveur pour recevoir les données d\'un customer DataInputStream input; attempt { input = new DataInputStream (clientSocket.getInputStream()); } get (IOException e) {System.out.println(e);}

Slide 33

Côté Client Côté customer : pour recevoir une réponse du serveur DataInputStream : lire des lignes de texte, des entiers, des doubles,des caractères... ( read, readChar, readInt, readDouble, and readLine ,. ) (writeBytes… ) attempt {input = new DataInputStream( myClient.getInputStream ());} get (IOException e) {System.out.println(e);}

Slide 34

Autres entrées forays echoSocket = new Socket( "jessica", 7); out = new PrintWriter(echoSocket.getOutputStream(), valid); in = new BufferedReader(new InputStreamReader( echoSocket.getInputStream())); ATTENTION Le BufferedReader prend un Reader en paramètre et non un Stream Utilization des ObjectInputStream et ObjectOutputStream L\'output doit être initialisé en head sinon blocage à la Création du flux de fight.

Slide 35

Entrées fights : remark procéder ? Quid du marshaling ? l\'information qui est lue doit être du même sort et du même arrange que celle qui est écrite ATTENTION au choix de vos entrées forays – respecter la Cohérence des données transmises Le customer doit il connaître la nature des E/S du serveur pour être écrit ?

Slide 36

Comment se déconnecter ? Fermer correctement les flux d\'entrée fight et les attachments en cause. Côté customer Côté serveur

Slide 37

Comment fermer un attachment ? Fermer les yield et input stream avant le attachment. C

Recommended
View more...