La programmation réseau. Java



Documents pareils
Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Le modèle client-serveur

Programmation Internet en Java

Dis papa, c est quoi un bus logiciel réparti?

Cahier des Charges du Projet Domotique. Choquet Mathieu Masson Jérôme Groupe 6. Domotique. p.1

Programmation client-serveur sockets - RPC

Remote Method Invocation (RMI)

RMI le langage Java XII-1 JMF

Cours 6 : Programmation répartie

Projet de programmation (IK3) : TP n 1 Correction

Gestion distribuée (par sockets) de banque en Java

Principes des Architectures Middleware version 2.0

Programmation Réseau SSH et TLS (aka SSL)

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Auto-évaluation Programmation en Java

Introduction. Adresses

Synchro et Threads Java TM

Flux de données Lecture/Ecriture Fichiers

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Threads. Threads. USTL routier 1

Programmer en JAVA. par Tama

Remote Method Invocation en Java (RMI)

18 TCP Les protocoles de domaines d applications

M1 MIAGE - Réseau TP1

Corrigé des exercices sur les références

Entrées / Sorties. Entrées / Sorties. Entrées/Sorties. System.out. Fonctionnement par flots (stream) Karima Boudaoud IUT- R&T. Terrain connu.

Programmation Par Objets

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Remote Method Invocation Les classes implémentant Serializable

Java Licence Professionnelle CISII,

Chapitre 10. Les interfaces Comparable et Comparator 1

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Calcul Parallèle. Cours 5 - JAVA RMI

Une introduction à Java

Intergiciel - concepts de base

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Introduction au langage Java

Développement Logiciel

Introduction aux Technologies de l Internet

Introduction : les processus. Introduction : les threads. Plan

Java DataBaseConnectivity

Un ordonnanceur stupide

Intérêt du NAT (Network Address Translation) Administration Réseau Niveau routage. Exemple d Intranet. Principe NAT

as Architecture des Systèmes d Information

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

L3 informatique Réseaux : Configuration d une interface réseau

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Java RMI. Arnaud Labourel Courriel: Université de Provence. 8 mars 2011

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Introduction à HTTP. Chapitre HTTP 0.9

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

TP1 : Initiation à Java et Eclipse

Android UIThread, Thread, Handler et AsyncTask

Cours 1: Java et les objets

PROGRAMMATION PAR OBJETS

1. Fonctionnement de l Internet 2. Protocoles applicatifs 3. Programmation réseau

Modèle à composants. Daniel Hagimont. IRIT/ENSEEIHT 2 rue Charles Camichel - BP TOULOUSE CEDEX 7. Remerciements

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

II/ Le modèle OSI II.1/ Présentation du modèle OSI(Open Systems Interconnection)

Package Java.util Classe générique

Desktop Intégration. Rémi Forax

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

Premiers Pas en Programmation Objet : les Classes et les Objets

Java Naming and Directory Interface

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.

Applet pour visualiser les variables «automate» notifiées

OpenPaaS Le réseau social d'entreprise

Développement Web. Les protocoles

Java - RMI Remote Method Invocation. Java - RMI

Figure 1a. Réseau intranet avec pare feu et NAT.

Cours CCNA 1. Exercices

Programmation Réseau. ! UFR Informatique ! Jean-Baptiste.Yunes@univ-paris-diderot.fr

Tp 1 correction. Structures de données (IF2)

Plan. École Supérieure d Économie Électronique. Plan. Chap 9: Composants et systèmes de sécurité. Rhouma Rhouma. 21 Juillet 2014

TD3: tableaux avancées, première classe et chaînes

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

INITIATION AU LANGAGE JAVA

Objets et Programmation. origine des langages orientés-objet

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Programmation par les Objets en Java

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Cours 14 Les fichiers

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

Couche application. La couche application est la plus élevée du modèle de référence.

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

ALOHA LOAD BALANCER METHODE DE CONTROLE DE VITALITE

Réseaux et protocoles Damien Nouvel

2. DIFFÉRENTS TYPES DE RÉSEAUX

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

et se trouve popularisé rapidement pour ses possibilités de développement liés au Web. Les

Surveiller sa maison via son Smartphone sous Android

Transcription:

Chapitre 7 : Java et les réseaux La programmation réseau Java Rémy Courdier 1996-2003 - Java Réseau - Version du cours 3.0 1 Sommaire La programmation réseau La classe URL Les Sockets TCP/IP et les principaux services La classe InetAdress Processus de Sockets Exemple de process serveur Exemple de process client simple et multi-clients Datagram- Buffered stream- et Data Stream- sockets Rémy Courdier 1996-2003 - Java Réseau - Version du cours 3.0 2

La classe URL accès à une URL pour le Web ://Hote[:port]/cheminDacces getfile(), gethost(), getport(), getprotocol(), getref() retournent les champs de l URL Les données référencée par l URL peuvent être téléchargée de 3 façons : par un objet URLConnection créé par openconnection() par un objet InputStream créé par openstream() par l appel à getcontents() qui retourne directement le contenu pour plus de contrôle utiliser la classe URLConnection getcontent-length-type-encoding... /** la Classe.URL : * encaps. Uniform Resource Locator public final class URL extends Java.lang.Object implements serealizable {... public final Object getcontent() throws IOException; public URLConnection openconnection(); throws IOException; public final InputStream openstream(); throws IOException; public String tostring(); try URL lt = new URL ( http://... ); catch (MalformedURLException e) { //...traitement d erreur Rémy Courdier 1996-2003 - Java Réseau - Version du cours 3.0 3 Sockets Sockets: communication peer-ro-peer possède un nom et une adresse réseau Les types de sockets : Datagram sockets interface pour l accès UDP (User Datagram Protocol) transmissions de paquets indépendants sans garantie Stream sockets interface pour l accès TCP (Transmission Control Protocol) guarantie de transmission... Raw sockets interface au protocol IP (Internet Protocol) ou ICMP (Internet Control Message Protocol) tests de nouveaux protocoles ou fcts évoluées Utilité des Datagram sockets multicast : envoi de paquets à un groupe (ex. NetBios) Il existe une classe (java 1.1) multicastsocket dérivée de DatagramSocket broadcast : envoi de paquets à l ensemble des entités d un réseau situation de découverte : découvrir des entités du réseaux, nouveau service disponible messagerie non critique : envoi de messages de contrôle d activité non critiques Je suis en vie Rémy Courdier 1996-2003 - Java Réseau - Version du cours 3.0 4

TCP/IP et les principaux services Application NIS NIS NFS NFS Présentation Session XDR XDR RPC RPC X11 X11 FTP FTP HTTP HTTP SMTP SMTP TELNET TELNET Etc... Etc... Sockets Transport UDP UDP TCP TCP Réseau IP IP Liaison Ethernet Ethernet FDDI FDDI Token Token Ring Ring Etc... Etc... Rémy Courdier 1996-2003 - Java Réseau - Version du cours 3.0 5 La classe InetAdress faire plus que télécharger un objet référencé par une URL. écrire un serveur par exemple... accès à une adresse sur TCP/IP Net_id.Host_id.Port_ID 206.24.45.100 java.sun.com Cette classe permet de se connecter à un port d un Host Internet et d écrire/lire des données des classes java.io. Pas de constructeur utilisation de getlocalhost(), getbyname() ou getallbyname() tests sans le réseau... //retourn le localhost addr = InetAddress.getByName(null); /** la Classe InetAdress: * encapsulation d une adresse IP public final class InetAdress extends Java.lang.Object { // Methodes de classes public static InetAdress getbyname(string host) throws UnknownHostException; // ttes les @IP associées à un Host public static InetAdress [] getallbyname(string host) throws UnknownHostException; public static InetAdress getlocalhost(string host) throws UnknownHostException; // Méthodes d instances public boolean equals (Object obj); public byte[] getadress(); public gethostname(); public hashcode(); public String tostring(); Rémy Courdier 1996-2003 - Java Réseau - Version du cours 3.0 6

Processus de Sockets - 1 creation et initialisation d une Socket : appel de socket(...) Rémy Courdier 1996-2003 - Java Réseau - Version du cours 3.0 7 Processus de Sockets - 2 Établissement d un service sur un port de la machine serveur pour être visible du réseau : bind(...) Rémy Courdier 1996-2003 - Java Réseau - Version du cours 3.0 8

Processus de Sockets - 3 attente de connexions, le serveur est prêt : appel de listen(...) un un serveur Datagram sockets n utilise pas pas de de :: il il n y n y a pas pas de de déroulement de de sessions Rémy Courdier 1996-2003 - Java Réseau - Version du cours 3.0 9 Processus de Sockets - 4 Un initialise une connexion à un service : appel de session TCP attente client suivant création thread un un serveur serveur Datagram sockets n utilise pas pas de de Le serveur accepte la connexion et déclenche un nouveau processus pour prendre en compte le client Rémy Courdier 1996-2003 - Java Réseau - Version du cours 3.0 10

Processus de Sockets - 5 le client et le serveur échangent leurs données : en général par des et dans un objet Stream Datagram sockets utilise utilise send() send() et et receive() plutôt plutôt que que et et nbxlab 50 session TCP attente client suivant création thread Rémy Courdier 1996-2003 - Java Réseau - Version du cours 3.0 11 Processus de Sockets - 6 fermeture du Socket : les sockets sont des ressources limitées et doivent être fermées par les deux parties cliente et serveur nbxlab 50 session TCP attente client suivant création thread Rémy Courdier 1996-2003 - Java Réseau - Version du cours 3.0 12

Exemple de serveur /** un serveur tres simple qui renvoie ce * qu il reçoit : serveur miroir import java.io.*; import.*; public class ServerMiroir { // Choisir un no de port non entre 1-1024 static final int port = 8080; public static void main(string[] args ) { ServerSocket s = new ServerSocket(port); System.out.println("Serv Started: " + s); // Blocks until a connection occurs: Socket socket = s.; System.out.println( "Connect. accepted, socket: "+ socket); BufferedReader in = new BufferedReader( new InputStreamReader( socket.getinputstream())); PrintWriter out = new PrintWriter( new OutputStreamWriter( socket.getoutputstream())); while (true) { String str = in.readline(); if (str.equals("end")) break; System.out.println ("Echoing: " + str); out.println(str); out.flush(); // Ne pas oublier! System.out.println("closing..."); socket.; catch(exception e) { e.printstacktrace(); Rémy Courdier 1996-2003 - Java Réseau - Version du cours 3.0 13 Exemple de process serveur /** un serveur tres simple qui renvoie ce * qu il reçoit : serveur miroir import java.io.*; import.*; public class ServerMiroir { Pas Pas d @ d @ IP IP : // Choisir un no de port entre 1-1024 exécuté exécuté sur sur static final int port = 8080; la la machine machine public static void main(string[] args courante ) { courante Représente Représente ServerSocket s = new ServerSocket(port); la System.out.println("Serv Started: " + s); la connection connection // Blocks until a connection occurs: Socket socket = s.; System.out.println( "socket: "+ socket); BufferedReader in = new BufferedReader( new InputStreamReader( socket.getinputstream())); PrintWriter out = new PrintWriter( new OutputStreamWriter( socket.getoutputstream())); sinon sinon le le buffer buffer while (true) { n est n est pas pas écrit écrit String str = in.readline(); sur sur le le réseau réseau if (str.equals("end")) tant break; tant qu il qu il n est n est System.out.println pas pas plein plein ("Echoing: " + str); out.println(str); out.flush(); // Ne pas oublier! System.out.println("closing..."); socket.; catch(exception e) { e.printstacktrace(); appel appel automatique automatique à tostring() tostring() socket: socket: [addr=207.0.0.1, [addr=207.0.0.1, port=1077, port=1077, localport=8080] localport=8080] Rémy Courdier 1996-2003 - Java Réseau - Version du cours 3.0 14

Exemple de process /** Un client tres simple qui envoie n * lignes au serveur et lit n ligne import java.io.*; import.*; public class Miroir { static final int port = 8080; public static void main(string args[]) { // Passing null to getbyname() produces the // special "Local Loopback" IP address, for // testing on one machine w/o a network: InetAddress addr = InetAddress.getByName(null); // On aurait pu utiliser l adresse ou // le nom de façon équivalente // InetAddress.getByName("127.0.0.1"); // InetAddress.getByName("localhost"); System.out.println("addr = " + addr); Socket socket = new Socket(addr, port); System.out.println("socket = " + socket); DataInputStream in = new DataInputStream( new BufferedInputStream( socket.getinputstream())); PrintStream out = new PrintStream( new BufferedOutputStream( socket.getoutputstream())); for(int i = 0; i < 10; i ++) { out.println("howdy " + i); out.flush(); // Ne pas oublier String str = in.readline(); System.out.println(str); out.println("end"); out.flush(); // Ne pas oublier! socket.; catch(exception e) { e.printstacktrace(); Rémy Courdier 1996-2003 - Java Réseau - Version du cours 3.0 15 Gestion de plusieurs clients pour le serveur import java.io.*; import.*; class ServerMiroir extends Thread { private Socket socket; private BufferedReader in; private PrintWriter out; ServerMiroir (Socket s) { socket = s; in = new BufferedReader( new...); out = new PrintWriter( new...); catch(ioexception e) {... start(); // Calls run() public void run() { while (true) { //lire s = in.readline System.out.println("closing..."); in.; out.; socket.; catch (IOException e) {... public class MultiServerMiroir { static final int port = 8080; public static void main(string[] args ) { ServerSocket s = new ServerSocket(port); System.out.println("Serv. Started"); while(true) { // Bloque jusqu a connexion Socket socket = s.; new ServerMiroir(socket); catch(exception e) { e.printstacktrace(); Rémy Courdier 1996-2003 - Java Réseau - Version du cours 3.0 16

Datagram- Buffered stream- et Data Stream- sockets Datagram Buf.Stream DataStream CORBA fiabilité de la communication Paramètres typés performances Sécurité très bonne 1,8 ms bonne 2 ms mauvaise 301 ms bonne 3,2 ms Desciptions d Interface Les sockets fournissent un moyen de bas niveau pour la programmation réseau La programmation d une appli. / doit y plutôt s appuyer sur CORBA IIOP et Java RMI Rémy Courdier 1996-2003 - Java Réseau - Version du cours 3.0 17