SlideShare une entreprise Scribd logo
L'interaction avec le réseau Korteby Farouk Cours Java Avancée
Sommaire Le package java.net et les API réseau de Java  Les Sockets Java Les sockets en mode connecté Un serveur TCP/IP Un client TCP/IP Les échanges de données Les classes de connexion
Le package java.net et les API réseau de Java Korteby Farouk Cours Java Avancée
Le package java.net et les API réseau Java Ce package fournit un ensemble de classes pour communiquer sur le réseau Internet (et Intranet), télécharger des URL et définir de nouveaux protocoles Il permet notamment de créer et d'accéder à : des connexions  URL  (Web) des connexions Stream socket ( TCP ) des connexions Datagram sockets ( UDP ) des connexions Multicast sockets
Le package java.net et les API réseau Java 2 packages :  java.net  et  javax.net Socket TCP : -  Socket ,  ServerSocket -  JSSE  (Java Secure Socket Layer) Sockets UDP : -  DatagramSocket ,  DatagramPacket Sockets MultiCast : -  MulticastSocket ,  DatagramPacket
Le package java.net et les API réseau Java Adresses IP -  InetAddress Classes réseau niveau application (couche 7) -  URL, URI, URLConnection, -  HttpURLConnection, JarURLConnection
Le package java.net et les API réseau Java Une bonne partie de ces classes ne sont que très rarement utilisées par les applications Les classes les plus utilisées : -  URL  : un URL Internet (puissante et simple) -  Socket  et  ServerSocket  : connexions TCP/IP -  DatagramPacket  et  DatagramServer  : connexions UDP
Le package java.net et les API réseau Java La classe java.net.InetAddress: Représente une adresse IP - Utilisée par les classes Socket et DatagramSocket 3 méthodes statiques pour la résolution DNS : public static InetAddress  getByName (String hostname) throws UnknownHostException public static InetAddress[]  getByName (String hostname) throws UnknownHostException - Donne l(es) adresse(s) de l'hôte dont le DN est passé en paramêtre public static InetAddress  getLocalHost () throws UnknownHostException - Donne l'adresse de l'hôte local
Le package java.net et les API réseau Java Exemple : InetAddress server; try { if(args.length > 0) { server = InetAddress. getByName (args[0]); } else { server = InetAddress. getLocalHost (); } System.out.println(server); // le nom du serveur } catch( UnknownHostException  e) {}
Les Sockets Java Korteby Farouk Cours Java Avancée
Les Sockets Java Korteby Farouk Cours Java Avancée 1. Les sockets en mode connecté
Les Sockets Java Qu'est ce qu'un socket ? Point d'entrée entre 2 applications du réseau Permet l'échange de données entre elles à l'aide des mécanismes d'entrées / sorties classiques (java.io)
Les Sockets Java Différents types de sockets : -  Stream Sockets  (TCP) Pour établir une communication en  mode connecté Si connexion interrompue, les applications sont informées -  Datagram Sockets  (UDP) Communication en  mode non connecté  (Datagramme) Données envoyées sous forme de paquets indépendants de toute connexion. Plus rapide mais moins fiable -  Raw Sockets Accès aux couches basses (très bas niveau). Non implémentées en Java
Les Sockets Java Des exemples d'applications Applications TCP les plus connues - FTP, SMTP, TELNET, etc. Applications UDP les plus connues : - Simple Network Management Protocol (SNMP) - Trivial File Transfert Protocol (TFTP) Les Raw Sockets permettent d'accéder à ICMP (Internet Control Message Protocol)
Les Sockets Java Représente une connexion  fiable  TCP/IP entre 2 processus (qui peuvent être des JVM !) - La connexion est fiable (contrôle d'erreur, …) - Et 2 flots de données sont établis entre les 2 machines La connexion est asymétrique : - Une machine est  serveur  : classe  ServerSocket Elle attend les demandes de connexion et les accepte - Une machine est  cliente  : classe  Socket Elle demande l'établissement de la connexion avec le serveur
Les Sockets Java Le modèle client-serveur
Les Sockets Java Principe de fonctionnement 1. Le serveur enregistre son service sous un numéro de port indiquant le nombre de clients qu'il accepte de faire buffériser à un instant t ( new ServerSocket(…)  ) 2. Il se met en attente d'une connexion (méthode  accept()  de son instance  ServerSocket ) 3. Le client peut alors établir une connexion en demandant la création d'un Socket ( new Socket())  à destination du serveur pour le port sur lequel le service a été enregistré.
Les Sockets Java 4. Le serveur sort de son  accept()  et récupère un Socket de communication avec le client 5. Ils peuvent alors utiliser des  InputStream  et  OutputStream  pour échanger des données
Les Sockets Java Korteby Farouk Cours Java Avancée 2. Un serveur TCP/IP
2. Un serveur TCP/IP - Utiliser la classe  java.net.ServerSocket - Quand un client se connecte à un port sur lequel un  ServerSocket  écoute,  ServerSocket  crée une nouvelle instance de la classe  Socket  pour supporter les communications côté serveur public static final int PORT = …; ServerSocket server = new  ServerSocket (PORT); Socket connection = server .accept ();
2. Un serveur TCP/IP - Les constructeurs et la plupart des méthodes peuvent générer une  IOException - La méthode  accept()  est dite bloquante ce qui implique un type de programmation particulier : boucle infinie qui se termine seulement si une erreur grave se produit …
2. Un serveur TCP/IP java.net.ServerSocket final int PORT = …; try{ ServerSocket  server = new  ServerSocket (PORT, 5); while(true){ Socket socket =  server.accept()  ; … } } catch( IOException  e) {…} //Les sockets en mode connecté
Les Sockets Java Korteby Farouk Cours Java Avancée 3. Un client TCP/IP
3. Un client TCP/IP - Le client se connecte au serveur en créant une instance de la classe  java.net.Socket  : connexion synchrone public static final String HOST = …; public static final int PORT = …; Socket  connection =  new Socket (HOST, PORT); - Le socket permet de supporter les communications côté client - Les constructeurs et la plupart des méthodes peuvent générer une  IOException
3. Un client TCP/IP Le serveur doit être démarré avant le client. Dans le cas contraire, si le client se connecte à un serveur inexistant, une exception sera levée après un  time-out . La méthode  close()  ferme (détruit) le socket, côté client comme côté serveur
3. Un client TCP/IP java.net.Socket Les sockets en mode connecté final String HOST = "…"; final int PORT = …; Socket s = null; try{ s = new  Socket (HOST, PORT); … } catch(IOException e) {…} finally { try{ s.close()  ;} catch(IOException e){} }
3. Un client TCP/IP Remarques lors du déroulement de l'exécution Le serveur : - Après la fermeture de la connexion, il se met en attente d'une nouvelle connexion du même client ou d'un autre Si plusieurs demandes de connexions arrivent simultanément, une seule est acceptée et les autres sont mises en attente jusqu'au  accept()  suivant (modulo les  time-out ) ⇒  pour accepter et traiter plusieurs connexions simultanées, la solution est de  multithreader  le serveur
3. Un client TCP/IP Le protocole d'échange des données - Le client et le serveur doivent respecter un protocole utilisateur d'échange des données VALIDE. - Exemples de problèmes possibles : -Le client envoie un entier mais le serveur attend un flottant -Le client attend des données du serveur qui lui-même attend des données du client : interblocage ( deadlock ) - Attention à l'hétérogénéité des plates-formes client et serveur
Les Sockets Java Korteby Farouk Cours Java Avancée 4. Les échanges de données
4. Les échanges de données 2 types d'échanges possibles : - Échange en mode ligne - Échange en mode BLOC de bytes
4. Les échanges de données Échange en mode Ligne: - Les requêtes et les réponses sont constituées d'une ou plusieurs lignes de texte (ASCII 7 bits,UTF-8, UniCode, ASN1, …) Exemples de protocole en mode Ligne : HTTP, FTP,SMTP - En Java : Utilisation des classes Java d'entrées/sorties java.io.* -  java.io.BufferedReader -  java.io.BufferedWriter
4. Les échanges de données Attention : - Les terminateurs de ligne varient selon les OS : -Tantôt LF '', tantôt CR '', tantôt CRLF "", … - L'encodage n'est pas supporté par tous les langages - Certains protocoles (HTTP, SMTP, etc) limitent la longueur des lignes
4. Les échanges de données - Une fois la connexion établie, il faut obtenir les  streams  d'entrées et de sorties ( java.io ) auprès de l'instance de la classe  Socket  en cours - Flux entrant : InputStream in = socket. getInputStream (); InputStreamReader reader = new InputStreamReader(in); BufferedReader istream = new BufferedReader(reader); String line = istream.readLine();
4. Les échanges de données Déroulement : Obtention d'un  stream  simple : définit les opérations de base 2. Création d'un  stream  convertissant les bytes reçus en char 3. Création d'un  stream  de lecture avec tampon : pour lire ligne par ligne dans un  stream  de caractères 4. Lecture d'une chaîne de caractères
4. Les échanges de données Flux sortant : OutputStream out = socket. getOutputStream (); PrintWriter ostream = new PrintWriter(out); ostream. println (str); ostream. flush (); 1. Obtention du flux de données sortantes : bytes 2. Création d'un  stream  pour convertir les bytes en chaînes de caractères 3. Envoi d'une ligne de caractères 4. Envoi effectif sur le réseau des bytes (important).
4. Les échanges de données exemple du client:s Socket s = null; s = new Socket(HOST, PORT); // lecture du flux d'entrée en provenance du serveur InputStream in = s. getInputStream (); InputStreamReader reader = new InputStreamReader(in); BufferedReader istream = new BufferedReader(reader); String line = istream. readLine (); // Echo la ligne lue vers le serveur PrintWriter ostream =new PrintWriter(s. getOutputStream ()); ostream. println (line); ostream. flush ();
4. Les échanges de données Échange en mode Bloc de bytes - Les requêtes et les réponses sont des blocs de bytes d'une taille et d'un format connus de l'autre Exemples : RPC, RMI, CORBA, LDAP, … Le bloc peut avoir un entête qui contient un code d'opération et la longueur du corps du bloc qui contient les données - En Java : Utilisation possible des classes -  java.io.DataInputStream -  java.io.DataOutputStream Mais impose que le client et le serveur soient des JVM
4. Les échanges de données Les exceptions -  java.net.BindException Erreur de liaison à une adresse locale (le port est peut être déjà lié) -  java.net.ConnectException Refus de connexion par l'hôte (pas de process qui écoute le port, etc.) -  java.net.NoRouteToHostException Le hôte n'est pas joignable
4. Les échanges de données - java.net.ProtocolException Erreur du protocole (TCP, etc.) -  java.net.SocketException Erreur du protocole (TCP, etc.) -  java.net.UnknownHostException Erreur de DNS
Les classes de connexion Korteby Farouk Cours Java Avancée
Les classes de connexion - java.net.URL - java.net.URLConnection
Les classes de connexion Rappels - URL :  U niform  R esource  L ocator - Une URL est une chaîne de caractères qui permet de localiser de manière unique une ressource sur le réseau Internet - Elle identifie à la fois : -Le protocole à utiliser pour charger la ressource (ftp, file,http, etc) -La machine hôte : adresse IP + numéro de port(optionnel) -Le chemin d'accès à la ressource (arborescence) -Le nom de la ressource
Les classes de connexion java.net.URL - Permet le téléchargement des informations référencées par une URL Contient des méthodes pour créer/ouvrir des pages Web - Constructeurs : URL url1= new URL("/users/itey/pages/cours/index.html"); URL url2= new URL("http://www.inria.fr/"); URL url3= new URL(url2, "semir/itey/index.html"); URL url4= new URL(url3, "#BOTTOM"); URL url5= new URL("http", "www.inria.fr", "/itey/cv.html"); - Peuvent lever une MalformedURLException
Les classes de connexion Méthodes : -  String getProtocol(), String getHost() -  String getPort(), String getRef() -  InputStream openStream() Obtenir un InputStream d'une connexion au serveur -  URLConnection openConnection() Obtenir un URLConnection
Les classes de connexion - Exemple d'utilisation des méthodes getXxx() URL aURL = new URL("http://java.sun.com:80/docs/books/" +"tutorial/index.html#DOWNLOADING"); System.out.println("Protocol = " + aURL. getProtocol ()); System.out.println("Host = " + aURL. getHost ()); System.out.println("Filename = " + aURL. getFile ()); System.out.println("Port = " + aURL. getPort ()); System.out.println("Ref = " + aURL. getRef ());
Les classes de connexion - Exemple de récupération d'un document : URL aURL = new URL(args[0]); BufferedReader in = new BufferedReader( new InputStreamReader(aURL. openStream ())); String inputLine; while((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close();
Les classes de connexion Utilitaires - Chemin relatif : La classe  java.net.URI  offre des méthodes pour la construction d'URL "relative" - Encoder/Decoder : Méthodes statiques de conversion : x-www-form-urlencoded  vers/depuis  String static String URLDecoder.decode(String urlencoded) Static String URLEncoder.encode(String str)
Les classes de connexion java.net.URLEncoder - Convertit une chaîne de caractères String en un format portable : xxx-www-form-urlencoded -Les caractères ASCII '('a'-'z', 'A'-'Z','0'-'9') restent non modifiés -L'espace est converti en '+' -Tous les autres sont convertis en "%xy" où xy est la représentation hexadécimale des 16 bits de poids faible du caractère
Les classes de connexion java.net.URLConnection - Définit une connexion à une URL Offre un meilleur contrôle sur le téléchargement d'informations référencées par une URL Super-classe abstraite indépendante du schéma de connexion -http, ftp, file, mailto, … - Ses sous-classes : HttpURLConnection JarURLConnection
Les classes de connexion Utilisation : 1. L'instance est récupérée de  openConnection() 2. Configuration des paramètres de la connexion   setAllowUserInteraction,   setDoInput, setDoOutput   setIfModifiedSince, setUsesCaches,  … 3. Connexion  connect()  et obtention d'un  InputStream 4. Récupération des champs d'entête ( header fields ) getContent, getHeaderField, getContentEncoding getContentType, getDate, getExpiration, getLastModified
Les classes de connexion Exemple de récupération d'un document URL aURL = new URL(args[0]); URLConnection aURLc = aURL. openConnection (); BufferedReader in = new BufferedReader( new InputStreamReader(aURLc. getInputStream ())); String inputLine; while((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close();
Les classes de connexion Exemple d'envoi de mail : public static void main(String[] args) throws Exception { URL mailto = new URL("mailto:" + args[0]); URLConnection mailtocnx = mailto. openConnection (); mailtocnx. connect (); PrintStream p = new PrintStream(mailtocnx. getOutputStream ()); p.println("Subject: TestSalut!"); p.close();
Les classes de connexion java.net.HttpURLConnection Sous interface de URLConnection -Récupération d'un document via une connexion    HTTP Méthodes : -Positionnement des champs de la requête HTTP setRequestMethod() -Récupération des champs de la réponse HTTP getResponseCode(), getResponseMessage() - Clôture de la session HTTP disconnect()  pour les connexions keep-alive
Les classes de connexion Exemple de récupération d'un document URL hurl = new URL(args[0]); HttpURLConnection hcnx = (HttpURLConnection) hurl. openConnection (); if(hcnx. getResponseCode () ==  HttpURLConnection.HTTP_OK ){ BufferedReader in = new BufferedReader( new InputStreamReader(hcnx. getInputStream ())); String inputLine; while((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close(); }else{System.err.println(hcnx. getResponseMessage ());}
Les classes de connexion java.net.JarURLConnection - Sous interface de URLConnection Récupération d'un fichier JAR ou d'une de ses entrées - Syntaxe de l'URL : jar:<url>!/{entry} !/ est un séparateur - Un JAR File : jar:http://www.foo.com/bar/baz.jar!/ - Un JAR File : jar:file:/local/dev/baz.jar!/ - Un rép. : jar:http://www.foo.com/bar/baz.jar!/COM/foo/ -Une entrée : jar:http://www.foo.com/bar/baz.jar!/COM/foo/Quux.class
Les classes de connexion Exemple : URL url = new URL(&quot;jar:http://www.foo.com/bar/baz.jar!/&quot;); JarURLConnection jar = (JarURLConnection)url.openConnection(); Manifest manifest = jar. getManifest ();
Ateliers Korteby Farouk Cours Java Avancée
Ateliers TP1:- Client Serveur Chaîne – application client serveur qui communique une chaîne de caractère. 2 classes ServeurChaine et ClientChaine dans 2 fichiers *.java
Ateliers Serveur:  lance une boucle infinie d’attente pour attendre les demandes de connexions des clients. Si la demande est accepte ,la tache rentre dans une boucle chargée de la communication avec un sel client.
Ateliers Client: La partie cliente effectue une demande de connexion par la creation d’un nouvel objet Socket dans la tache initiale. Les parametres utilises sont l’adresse du serveur et le numero de port
Ateliers
Merci de votre Attention By Korteby Farouk Cours Java Avancée

Contenu connexe

Tendances

Rapport application chat
Rapport application chatRapport application chat
Rapport application chat
Tbatou sanae
 
Socket tcp ip client server on langace c
Socket tcp ip client server on langace c Socket tcp ip client server on langace c
Socket tcp ip client server on langace c
mouad Lousimi
 
Les socket ing1_issat
Les socket ing1_issatLes socket ing1_issat
Les socket ing1_issat
sloumaallagui
 
Reseau
ReseauReseau
Reseau
gijo000
 
Sockets
SocketsSockets
Sockets
Heithem Abbes
 
Système répartis avec RMI
Système répartis avec RMISystème répartis avec RMI
Système répartis avec RMI
Korteby Farouk
 
Appels de procédures distants (RPC)
Appels de procédures distants (RPC)Appels de procédures distants (RPC)
Appels de procédures distants (RPC)
Heithem Abbes
 
Développement informatique : Programmation réseau
Développement informatique : Programmation réseauDéveloppement informatique : Programmation réseau
Développement informatique : Programmation réseau
ECAM Brussels Engineering School
 
Présentation de RMI Java
Présentation de RMI JavaPrésentation de RMI Java
Présentation de RMI Java
Zakaria Bouazza
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlin
angeeLee
 
Maintenance du système Linux
Maintenance du système LinuxMaintenance du système Linux
Maintenance du système Linux
EL AMRI El Hassan
 
Cours 2 les architectures reparties
Cours 2 les architectures repartiesCours 2 les architectures reparties
Cours 2 les architectures reparties
Mariem ZAOUALI
 
Bah mamadou hady
Bah mamadou hadyBah mamadou hady
Bah mamadou hady
MamadouHadyBah
 
Hady bah l3
Hady bah l3Hady bah l3
Hady bah l3
MamadouHadyBah
 
Développement d'un client MQTT sur Raspberry Pi
Développement d'un client MQTT sur Raspberry PiDéveloppement d'un client MQTT sur Raspberry Pi
Développement d'un client MQTT sur Raspberry Pi
Chiheb Ameur ABID
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzles
Microsoft
 

Tendances (19)

Rapport application chat
Rapport application chatRapport application chat
Rapport application chat
 
Introduction aux-sockets
Introduction aux-socketsIntroduction aux-sockets
Introduction aux-sockets
 
Socket tcp ip client server on langace c
Socket tcp ip client server on langace c Socket tcp ip client server on langace c
Socket tcp ip client server on langace c
 
Les socket ing1_issat
Les socket ing1_issatLes socket ing1_issat
Les socket ing1_issat
 
Reseau
ReseauReseau
Reseau
 
Sockets
SocketsSockets
Sockets
 
Système répartis avec RMI
Système répartis avec RMISystème répartis avec RMI
Système répartis avec RMI
 
Appels de procédures distants (RPC)
Appels de procédures distants (RPC)Appels de procédures distants (RPC)
Appels de procédures distants (RPC)
 
Développement informatique : Programmation réseau
Développement informatique : Programmation réseauDéveloppement informatique : Programmation réseau
Développement informatique : Programmation réseau
 
Présentation de RMI Java
Présentation de RMI JavaPrésentation de RMI Java
Présentation de RMI Java
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlin
 
Maintenance du système Linux
Maintenance du système LinuxMaintenance du système Linux
Maintenance du système Linux
 
Cours 2 les architectures reparties
Cours 2 les architectures repartiesCours 2 les architectures reparties
Cours 2 les architectures reparties
 
Remote method invocation
Remote method invocationRemote method invocation
Remote method invocation
 
Rpc 4bypage
Rpc 4bypageRpc 4bypage
Rpc 4bypage
 
Bah mamadou hady
Bah mamadou hadyBah mamadou hady
Bah mamadou hady
 
Hady bah l3
Hady bah l3Hady bah l3
Hady bah l3
 
Développement d'un client MQTT sur Raspberry Pi
Développement d'un client MQTT sur Raspberry PiDéveloppement d'un client MQTT sur Raspberry Pi
Développement d'un client MQTT sur Raspberry Pi
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzles
 

Similaire à Le Réseau et Java

module_I6_Sockets.pdf
module_I6_Sockets.pdfmodule_I6_Sockets.pdf
module_I6_Sockets.pdf
Patiento Del Mar
 
Chap7_JavaNet.pdf
Chap7_JavaNet.pdfChap7_JavaNet.pdf
Chap7_JavaNet.pdf
Patiento Del Mar
 
Chapitre-4-Programmation-réseau-avec-les-sockets.pdf
Chapitre-4-Programmation-réseau-avec-les-sockets.pdfChapitre-4-Programmation-réseau-avec-les-sockets.pdf
Chapitre-4-Programmation-réseau-avec-les-sockets.pdf
YoussefJamma
 
Les sockets.pptx
Les sockets.pptxLes sockets.pptx
173544 introduction-aux-sockets
173544 introduction-aux-sockets173544 introduction-aux-sockets
173544 introduction-aux-sockets
naimanaima1
 
6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf
AliouDiallo24
 
programmation réseau en java
programmation réseau en java programmation réseau en java
programmation réseau en java
Ezéquiel Tsagué
 
8-socket.pdf
8-socket.pdf8-socket.pdf
8-socket.pdf
StyvePola1
 
Support Cours de Python et Réseaux.pptx
Support Cours de Python et Réseaux.pptxSupport Cours de Python et Réseaux.pptx
Support Cours de Python et Réseaux.pptx
ssuserbd075f
 
Switching
SwitchingSwitching
Switching
Omar Lakrary
 
Les Servlets et JSP
Les Servlets et JSPLes Servlets et JSP
Les Servlets et JSP
Korteby Farouk
 
Chapitre 6 - Protocoles TCP/IP, UDP/IP
Chapitre 6  - Protocoles TCP/IP, UDP/IPChapitre 6  - Protocoles TCP/IP, UDP/IP
Chapitre 6 - Protocoles TCP/IP, UDP/IP
Tarik Zakaria Benmerar
 
Cours 8 squid.pdf
Cours 8 squid.pdfCours 8 squid.pdf
Cours 8 squid.pdf
FayalBougherbal
 
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdfRAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
Souf212
 
Advanced html5
Advanced html5Advanced html5
Advanced html5
Arrow Group
 
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbWebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
HINDGUENDOUZ
 
Alphorm.com Formation CCNP ENCOR 350-401 (1of8) : Commutation
Alphorm.com Formation CCNP ENCOR 350-401 (1of8) : CommutationAlphorm.com Formation CCNP ENCOR 350-401 (1of8) : Commutation
Alphorm.com Formation CCNP ENCOR 350-401 (1of8) : Commutation
Alphorm
 
Chapitre 2.pdf
Chapitre 2.pdfChapitre 2.pdf
Chapitre 2.pdf
worldinternet
 
Chapitre 3 Comprendre la notion de socket.docx
Chapitre 3 Comprendre la notion de socket.docxChapitre 3 Comprendre la notion de socket.docx
Chapitre 3 Comprendre la notion de socket.docx
Koffi Kanga
 
Technologie Web.pptx
Technologie Web.pptxTechnologie Web.pptx
Technologie Web.pptx
hashiramasenju65
 

Similaire à Le Réseau et Java (20)

module_I6_Sockets.pdf
module_I6_Sockets.pdfmodule_I6_Sockets.pdf
module_I6_Sockets.pdf
 
Chap7_JavaNet.pdf
Chap7_JavaNet.pdfChap7_JavaNet.pdf
Chap7_JavaNet.pdf
 
Chapitre-4-Programmation-réseau-avec-les-sockets.pdf
Chapitre-4-Programmation-réseau-avec-les-sockets.pdfChapitre-4-Programmation-réseau-avec-les-sockets.pdf
Chapitre-4-Programmation-réseau-avec-les-sockets.pdf
 
Les sockets.pptx
Les sockets.pptxLes sockets.pptx
Les sockets.pptx
 
173544 introduction-aux-sockets
173544 introduction-aux-sockets173544 introduction-aux-sockets
173544 introduction-aux-sockets
 
6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf
 
programmation réseau en java
programmation réseau en java programmation réseau en java
programmation réseau en java
 
8-socket.pdf
8-socket.pdf8-socket.pdf
8-socket.pdf
 
Support Cours de Python et Réseaux.pptx
Support Cours de Python et Réseaux.pptxSupport Cours de Python et Réseaux.pptx
Support Cours de Python et Réseaux.pptx
 
Switching
SwitchingSwitching
Switching
 
Les Servlets et JSP
Les Servlets et JSPLes Servlets et JSP
Les Servlets et JSP
 
Chapitre 6 - Protocoles TCP/IP, UDP/IP
Chapitre 6  - Protocoles TCP/IP, UDP/IPChapitre 6  - Protocoles TCP/IP, UDP/IP
Chapitre 6 - Protocoles TCP/IP, UDP/IP
 
Cours 8 squid.pdf
Cours 8 squid.pdfCours 8 squid.pdf
Cours 8 squid.pdf
 
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdfRAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
 
Advanced html5
Advanced html5Advanced html5
Advanced html5
 
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbWebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 
Alphorm.com Formation CCNP ENCOR 350-401 (1of8) : Commutation
Alphorm.com Formation CCNP ENCOR 350-401 (1of8) : CommutationAlphorm.com Formation CCNP ENCOR 350-401 (1of8) : Commutation
Alphorm.com Formation CCNP ENCOR 350-401 (1of8) : Commutation
 
Chapitre 2.pdf
Chapitre 2.pdfChapitre 2.pdf
Chapitre 2.pdf
 
Chapitre 3 Comprendre la notion de socket.docx
Chapitre 3 Comprendre la notion de socket.docxChapitre 3 Comprendre la notion de socket.docx
Chapitre 3 Comprendre la notion de socket.docx
 
Technologie Web.pptx
Technologie Web.pptxTechnologie Web.pptx
Technologie Web.pptx
 

Plus de Korteby Farouk

XWiki : Framework de développement pour les plateformes collaboratives
XWiki : Framework de développement pour les plateformes collaborativesXWiki : Framework de développement pour les plateformes collaboratives
XWiki : Framework de développement pour les plateformes collaboratives
Korteby Farouk
 
Atelier : Développement rapide d&rsquo;une application basée surXWiki
Atelier : Développement rapide d&rsquo;une application basée surXWikiAtelier : Développement rapide d&rsquo;une application basée surXWiki
Atelier : Développement rapide d&rsquo;une application basée surXWiki
Korteby Farouk
 
Ateliers : Developpement mobile vs open source
Ateliers : Developpement mobile vs open sourceAteliers : Developpement mobile vs open source
Ateliers : Developpement mobile vs open source
Korteby Farouk
 
Developpement mobile vs open source
Developpement mobile vs open sourceDeveloppement mobile vs open source
Developpement mobile vs open source
Korteby Farouk
 
Le système d&rsquo;E/S en Java
Le système d&rsquo;E/S en JavaLe système d&rsquo;E/S en Java
Le système d&rsquo;E/S en Java
Korteby Farouk
 
Applets
AppletsApplets

Plus de Korteby Farouk (7)

Java vs .Net
Java vs .NetJava vs .Net
Java vs .Net
 
XWiki : Framework de développement pour les plateformes collaboratives
XWiki : Framework de développement pour les plateformes collaborativesXWiki : Framework de développement pour les plateformes collaboratives
XWiki : Framework de développement pour les plateformes collaboratives
 
Atelier : Développement rapide d&rsquo;une application basée surXWiki
Atelier : Développement rapide d&rsquo;une application basée surXWikiAtelier : Développement rapide d&rsquo;une application basée surXWiki
Atelier : Développement rapide d&rsquo;une application basée surXWiki
 
Ateliers : Developpement mobile vs open source
Ateliers : Developpement mobile vs open sourceAteliers : Developpement mobile vs open source
Ateliers : Developpement mobile vs open source
 
Developpement mobile vs open source
Developpement mobile vs open sourceDeveloppement mobile vs open source
Developpement mobile vs open source
 
Le système d&rsquo;E/S en Java
Le système d&rsquo;E/S en JavaLe système d&rsquo;E/S en Java
Le système d&rsquo;E/S en Java
 
Applets
AppletsApplets
Applets
 

Dernier

Les Vidéoprojecteurs : Guide d'achat et Comparatif
Les Vidéoprojecteurs : Guide d'achat et ComparatifLes Vidéoprojecteurs : Guide d'achat et Comparatif
Les Vidéoprojecteurs : Guide d'achat et Comparatif
Top-plans
 
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
Chadi Kammoun
 
La Gestion des risques selon ISO 27005.pdf
La Gestion des risques selon ISO 27005.pdfLa Gestion des risques selon ISO 27005.pdf
La Gestion des risques selon ISO 27005.pdf
SoniazghalKallel
 
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
InnovaSter-Trade Ltd.
 
INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
Faga1939
 
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
Nicolas Georgeault
 

Dernier (6)

Les Vidéoprojecteurs : Guide d'achat et Comparatif
Les Vidéoprojecteurs : Guide d'achat et ComparatifLes Vidéoprojecteurs : Guide d'achat et Comparatif
Les Vidéoprojecteurs : Guide d'achat et Comparatif
 
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
 
La Gestion des risques selon ISO 27005.pdf
La Gestion des risques selon ISO 27005.pdfLa Gestion des risques selon ISO 27005.pdf
La Gestion des risques selon ISO 27005.pdf
 
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
 
INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
 
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
 

Le Réseau et Java

  • 1. L'interaction avec le réseau Korteby Farouk Cours Java Avancée
  • 2. Sommaire Le package java.net et les API réseau de Java Les Sockets Java Les sockets en mode connecté Un serveur TCP/IP Un client TCP/IP Les échanges de données Les classes de connexion
  • 3. Le package java.net et les API réseau de Java Korteby Farouk Cours Java Avancée
  • 4. Le package java.net et les API réseau Java Ce package fournit un ensemble de classes pour communiquer sur le réseau Internet (et Intranet), télécharger des URL et définir de nouveaux protocoles Il permet notamment de créer et d'accéder à : des connexions URL (Web) des connexions Stream socket ( TCP ) des connexions Datagram sockets ( UDP ) des connexions Multicast sockets
  • 5. Le package java.net et les API réseau Java 2 packages : java.net et javax.net Socket TCP : - Socket , ServerSocket - JSSE (Java Secure Socket Layer) Sockets UDP : - DatagramSocket , DatagramPacket Sockets MultiCast : - MulticastSocket , DatagramPacket
  • 6. Le package java.net et les API réseau Java Adresses IP - InetAddress Classes réseau niveau application (couche 7) - URL, URI, URLConnection, - HttpURLConnection, JarURLConnection
  • 7. Le package java.net et les API réseau Java Une bonne partie de ces classes ne sont que très rarement utilisées par les applications Les classes les plus utilisées : - URL : un URL Internet (puissante et simple) - Socket et ServerSocket : connexions TCP/IP - DatagramPacket et DatagramServer : connexions UDP
  • 8. Le package java.net et les API réseau Java La classe java.net.InetAddress: Représente une adresse IP - Utilisée par les classes Socket et DatagramSocket 3 méthodes statiques pour la résolution DNS : public static InetAddress getByName (String hostname) throws UnknownHostException public static InetAddress[] getByName (String hostname) throws UnknownHostException - Donne l(es) adresse(s) de l'hôte dont le DN est passé en paramêtre public static InetAddress getLocalHost () throws UnknownHostException - Donne l'adresse de l'hôte local
  • 9. Le package java.net et les API réseau Java Exemple : InetAddress server; try { if(args.length > 0) { server = InetAddress. getByName (args[0]); } else { server = InetAddress. getLocalHost (); } System.out.println(server); // le nom du serveur } catch( UnknownHostException e) {}
  • 10. Les Sockets Java Korteby Farouk Cours Java Avancée
  • 11. Les Sockets Java Korteby Farouk Cours Java Avancée 1. Les sockets en mode connecté
  • 12. Les Sockets Java Qu'est ce qu'un socket ? Point d'entrée entre 2 applications du réseau Permet l'échange de données entre elles à l'aide des mécanismes d'entrées / sorties classiques (java.io)
  • 13. Les Sockets Java Différents types de sockets : - Stream Sockets (TCP) Pour établir une communication en mode connecté Si connexion interrompue, les applications sont informées - Datagram Sockets (UDP) Communication en mode non connecté (Datagramme) Données envoyées sous forme de paquets indépendants de toute connexion. Plus rapide mais moins fiable - Raw Sockets Accès aux couches basses (très bas niveau). Non implémentées en Java
  • 14. Les Sockets Java Des exemples d'applications Applications TCP les plus connues - FTP, SMTP, TELNET, etc. Applications UDP les plus connues : - Simple Network Management Protocol (SNMP) - Trivial File Transfert Protocol (TFTP) Les Raw Sockets permettent d'accéder à ICMP (Internet Control Message Protocol)
  • 15. Les Sockets Java Représente une connexion fiable TCP/IP entre 2 processus (qui peuvent être des JVM !) - La connexion est fiable (contrôle d'erreur, …) - Et 2 flots de données sont établis entre les 2 machines La connexion est asymétrique : - Une machine est serveur : classe ServerSocket Elle attend les demandes de connexion et les accepte - Une machine est cliente : classe Socket Elle demande l'établissement de la connexion avec le serveur
  • 16. Les Sockets Java Le modèle client-serveur
  • 17. Les Sockets Java Principe de fonctionnement 1. Le serveur enregistre son service sous un numéro de port indiquant le nombre de clients qu'il accepte de faire buffériser à un instant t ( new ServerSocket(…) ) 2. Il se met en attente d'une connexion (méthode accept() de son instance ServerSocket ) 3. Le client peut alors établir une connexion en demandant la création d'un Socket ( new Socket()) à destination du serveur pour le port sur lequel le service a été enregistré.
  • 18. Les Sockets Java 4. Le serveur sort de son accept() et récupère un Socket de communication avec le client 5. Ils peuvent alors utiliser des InputStream et OutputStream pour échanger des données
  • 19. Les Sockets Java Korteby Farouk Cours Java Avancée 2. Un serveur TCP/IP
  • 20. 2. Un serveur TCP/IP - Utiliser la classe java.net.ServerSocket - Quand un client se connecte à un port sur lequel un ServerSocket écoute, ServerSocket crée une nouvelle instance de la classe Socket pour supporter les communications côté serveur public static final int PORT = …; ServerSocket server = new ServerSocket (PORT); Socket connection = server .accept ();
  • 21. 2. Un serveur TCP/IP - Les constructeurs et la plupart des méthodes peuvent générer une IOException - La méthode accept() est dite bloquante ce qui implique un type de programmation particulier : boucle infinie qui se termine seulement si une erreur grave se produit …
  • 22. 2. Un serveur TCP/IP java.net.ServerSocket final int PORT = …; try{ ServerSocket server = new ServerSocket (PORT, 5); while(true){ Socket socket = server.accept() ; … } } catch( IOException e) {…} //Les sockets en mode connecté
  • 23. Les Sockets Java Korteby Farouk Cours Java Avancée 3. Un client TCP/IP
  • 24. 3. Un client TCP/IP - Le client se connecte au serveur en créant une instance de la classe java.net.Socket : connexion synchrone public static final String HOST = …; public static final int PORT = …; Socket connection = new Socket (HOST, PORT); - Le socket permet de supporter les communications côté client - Les constructeurs et la plupart des méthodes peuvent générer une IOException
  • 25. 3. Un client TCP/IP Le serveur doit être démarré avant le client. Dans le cas contraire, si le client se connecte à un serveur inexistant, une exception sera levée après un time-out . La méthode close() ferme (détruit) le socket, côté client comme côté serveur
  • 26. 3. Un client TCP/IP java.net.Socket Les sockets en mode connecté final String HOST = &quot;…&quot;; final int PORT = …; Socket s = null; try{ s = new Socket (HOST, PORT); … } catch(IOException e) {…} finally { try{ s.close() ;} catch(IOException e){} }
  • 27. 3. Un client TCP/IP Remarques lors du déroulement de l'exécution Le serveur : - Après la fermeture de la connexion, il se met en attente d'une nouvelle connexion du même client ou d'un autre Si plusieurs demandes de connexions arrivent simultanément, une seule est acceptée et les autres sont mises en attente jusqu'au accept() suivant (modulo les time-out ) ⇒ pour accepter et traiter plusieurs connexions simultanées, la solution est de multithreader le serveur
  • 28. 3. Un client TCP/IP Le protocole d'échange des données - Le client et le serveur doivent respecter un protocole utilisateur d'échange des données VALIDE. - Exemples de problèmes possibles : -Le client envoie un entier mais le serveur attend un flottant -Le client attend des données du serveur qui lui-même attend des données du client : interblocage ( deadlock ) - Attention à l'hétérogénéité des plates-formes client et serveur
  • 29. Les Sockets Java Korteby Farouk Cours Java Avancée 4. Les échanges de données
  • 30. 4. Les échanges de données 2 types d'échanges possibles : - Échange en mode ligne - Échange en mode BLOC de bytes
  • 31. 4. Les échanges de données Échange en mode Ligne: - Les requêtes et les réponses sont constituées d'une ou plusieurs lignes de texte (ASCII 7 bits,UTF-8, UniCode, ASN1, …) Exemples de protocole en mode Ligne : HTTP, FTP,SMTP - En Java : Utilisation des classes Java d'entrées/sorties java.io.* - java.io.BufferedReader - java.io.BufferedWriter
  • 32. 4. Les échanges de données Attention : - Les terminateurs de ligne varient selon les OS : -Tantôt LF '', tantôt CR '', tantôt CRLF &quot;&quot;, … - L'encodage n'est pas supporté par tous les langages - Certains protocoles (HTTP, SMTP, etc) limitent la longueur des lignes
  • 33. 4. Les échanges de données - Une fois la connexion établie, il faut obtenir les streams d'entrées et de sorties ( java.io ) auprès de l'instance de la classe Socket en cours - Flux entrant : InputStream in = socket. getInputStream (); InputStreamReader reader = new InputStreamReader(in); BufferedReader istream = new BufferedReader(reader); String line = istream.readLine();
  • 34. 4. Les échanges de données Déroulement : Obtention d'un stream simple : définit les opérations de base 2. Création d'un stream convertissant les bytes reçus en char 3. Création d'un stream de lecture avec tampon : pour lire ligne par ligne dans un stream de caractères 4. Lecture d'une chaîne de caractères
  • 35. 4. Les échanges de données Flux sortant : OutputStream out = socket. getOutputStream (); PrintWriter ostream = new PrintWriter(out); ostream. println (str); ostream. flush (); 1. Obtention du flux de données sortantes : bytes 2. Création d'un stream pour convertir les bytes en chaînes de caractères 3. Envoi d'une ligne de caractères 4. Envoi effectif sur le réseau des bytes (important).
  • 36. 4. Les échanges de données exemple du client:s Socket s = null; s = new Socket(HOST, PORT); // lecture du flux d'entrée en provenance du serveur InputStream in = s. getInputStream (); InputStreamReader reader = new InputStreamReader(in); BufferedReader istream = new BufferedReader(reader); String line = istream. readLine (); // Echo la ligne lue vers le serveur PrintWriter ostream =new PrintWriter(s. getOutputStream ()); ostream. println (line); ostream. flush ();
  • 37. 4. Les échanges de données Échange en mode Bloc de bytes - Les requêtes et les réponses sont des blocs de bytes d'une taille et d'un format connus de l'autre Exemples : RPC, RMI, CORBA, LDAP, … Le bloc peut avoir un entête qui contient un code d'opération et la longueur du corps du bloc qui contient les données - En Java : Utilisation possible des classes - java.io.DataInputStream - java.io.DataOutputStream Mais impose que le client et le serveur soient des JVM
  • 38. 4. Les échanges de données Les exceptions - java.net.BindException Erreur de liaison à une adresse locale (le port est peut être déjà lié) - java.net.ConnectException Refus de connexion par l'hôte (pas de process qui écoute le port, etc.) - java.net.NoRouteToHostException Le hôte n'est pas joignable
  • 39. 4. Les échanges de données - java.net.ProtocolException Erreur du protocole (TCP, etc.) - java.net.SocketException Erreur du protocole (TCP, etc.) - java.net.UnknownHostException Erreur de DNS
  • 40. Les classes de connexion Korteby Farouk Cours Java Avancée
  • 41. Les classes de connexion - java.net.URL - java.net.URLConnection
  • 42. Les classes de connexion Rappels - URL : U niform R esource L ocator - Une URL est une chaîne de caractères qui permet de localiser de manière unique une ressource sur le réseau Internet - Elle identifie à la fois : -Le protocole à utiliser pour charger la ressource (ftp, file,http, etc) -La machine hôte : adresse IP + numéro de port(optionnel) -Le chemin d'accès à la ressource (arborescence) -Le nom de la ressource
  • 43. Les classes de connexion java.net.URL - Permet le téléchargement des informations référencées par une URL Contient des méthodes pour créer/ouvrir des pages Web - Constructeurs : URL url1= new URL(&quot;/users/itey/pages/cours/index.html&quot;); URL url2= new URL(&quot;http://www.inria.fr/&quot;); URL url3= new URL(url2, &quot;semir/itey/index.html&quot;); URL url4= new URL(url3, &quot;#BOTTOM&quot;); URL url5= new URL(&quot;http&quot;, &quot;www.inria.fr&quot;, &quot;/itey/cv.html&quot;); - Peuvent lever une MalformedURLException
  • 44. Les classes de connexion Méthodes : - String getProtocol(), String getHost() - String getPort(), String getRef() - InputStream openStream() Obtenir un InputStream d'une connexion au serveur - URLConnection openConnection() Obtenir un URLConnection
  • 45. Les classes de connexion - Exemple d'utilisation des méthodes getXxx() URL aURL = new URL(&quot;http://java.sun.com:80/docs/books/&quot; +&quot;tutorial/index.html#DOWNLOADING&quot;); System.out.println(&quot;Protocol = &quot; + aURL. getProtocol ()); System.out.println(&quot;Host = &quot; + aURL. getHost ()); System.out.println(&quot;Filename = &quot; + aURL. getFile ()); System.out.println(&quot;Port = &quot; + aURL. getPort ()); System.out.println(&quot;Ref = &quot; + aURL. getRef ());
  • 46. Les classes de connexion - Exemple de récupération d'un document : URL aURL = new URL(args[0]); BufferedReader in = new BufferedReader( new InputStreamReader(aURL. openStream ())); String inputLine; while((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close();
  • 47. Les classes de connexion Utilitaires - Chemin relatif : La classe java.net.URI offre des méthodes pour la construction d'URL &quot;relative&quot; - Encoder/Decoder : Méthodes statiques de conversion : x-www-form-urlencoded vers/depuis String static String URLDecoder.decode(String urlencoded) Static String URLEncoder.encode(String str)
  • 48. Les classes de connexion java.net.URLEncoder - Convertit une chaîne de caractères String en un format portable : xxx-www-form-urlencoded -Les caractères ASCII '('a'-'z', 'A'-'Z','0'-'9') restent non modifiés -L'espace est converti en '+' -Tous les autres sont convertis en &quot;%xy&quot; où xy est la représentation hexadécimale des 16 bits de poids faible du caractère
  • 49. Les classes de connexion java.net.URLConnection - Définit une connexion à une URL Offre un meilleur contrôle sur le téléchargement d'informations référencées par une URL Super-classe abstraite indépendante du schéma de connexion -http, ftp, file, mailto, … - Ses sous-classes : HttpURLConnection JarURLConnection
  • 50. Les classes de connexion Utilisation : 1. L'instance est récupérée de openConnection() 2. Configuration des paramètres de la connexion setAllowUserInteraction, setDoInput, setDoOutput setIfModifiedSince, setUsesCaches, … 3. Connexion connect() et obtention d'un InputStream 4. Récupération des champs d'entête ( header fields ) getContent, getHeaderField, getContentEncoding getContentType, getDate, getExpiration, getLastModified
  • 51. Les classes de connexion Exemple de récupération d'un document URL aURL = new URL(args[0]); URLConnection aURLc = aURL. openConnection (); BufferedReader in = new BufferedReader( new InputStreamReader(aURLc. getInputStream ())); String inputLine; while((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close();
  • 52. Les classes de connexion Exemple d'envoi de mail : public static void main(String[] args) throws Exception { URL mailto = new URL(&quot;mailto:&quot; + args[0]); URLConnection mailtocnx = mailto. openConnection (); mailtocnx. connect (); PrintStream p = new PrintStream(mailtocnx. getOutputStream ()); p.println(&quot;Subject: TestSalut!&quot;); p.close();
  • 53. Les classes de connexion java.net.HttpURLConnection Sous interface de URLConnection -Récupération d'un document via une connexion HTTP Méthodes : -Positionnement des champs de la requête HTTP setRequestMethod() -Récupération des champs de la réponse HTTP getResponseCode(), getResponseMessage() - Clôture de la session HTTP disconnect() pour les connexions keep-alive
  • 54. Les classes de connexion Exemple de récupération d'un document URL hurl = new URL(args[0]); HttpURLConnection hcnx = (HttpURLConnection) hurl. openConnection (); if(hcnx. getResponseCode () == HttpURLConnection.HTTP_OK ){ BufferedReader in = new BufferedReader( new InputStreamReader(hcnx. getInputStream ())); String inputLine; while((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close(); }else{System.err.println(hcnx. getResponseMessage ());}
  • 55. Les classes de connexion java.net.JarURLConnection - Sous interface de URLConnection Récupération d'un fichier JAR ou d'une de ses entrées - Syntaxe de l'URL : jar:<url>!/{entry} !/ est un séparateur - Un JAR File : jar:http://www.foo.com/bar/baz.jar!/ - Un JAR File : jar:file:/local/dev/baz.jar!/ - Un rép. : jar:http://www.foo.com/bar/baz.jar!/COM/foo/ -Une entrée : jar:http://www.foo.com/bar/baz.jar!/COM/foo/Quux.class
  • 56. Les classes de connexion Exemple : URL url = new URL(&quot;jar:http://www.foo.com/bar/baz.jar!/&quot;); JarURLConnection jar = (JarURLConnection)url.openConnection(); Manifest manifest = jar. getManifest ();
  • 57. Ateliers Korteby Farouk Cours Java Avancée
  • 58. Ateliers TP1:- Client Serveur Chaîne – application client serveur qui communique une chaîne de caractère. 2 classes ServeurChaine et ClientChaine dans 2 fichiers *.java
  • 59. Ateliers Serveur: lance une boucle infinie d’attente pour attendre les demandes de connexions des clients. Si la demande est accepte ,la tache rentre dans une boucle chargée de la communication avec un sel client.
  • 60. Ateliers Client: La partie cliente effectue une demande de connexion par la creation d’un nouvel objet Socket dans la tache initiale. Les parametres utilises sont l’adresse du serveur et le numero de port
  • 62. Merci de votre Attention By Korteby Farouk Cours Java Avancée