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?

Programmation client-serveur sockets - RPC

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

Cours 6 : Programmation répartie

Remote Method Invocation (RMI)

RMI le langage Java XII-1 JMF

Flux de données Lecture/Ecriture Fichiers

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

Programmation Réseau SSH et TLS (aka SSL)

Principes des Architectures Middleware version 2.0

Projet de programmation (IK3) : TP n 1 Correction

Auto-évaluation Programmation en Java

Programmer en JAVA. par Tama

Remote Method Invocation en Java (RMI)

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

Introduction. Adresses

Synchro et Threads Java TM

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

Threads. Threads. USTL routier 1

18 TCP Les protocoles de domaines d applications

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

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

M1 MIAGE - Réseau TP1

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

as Architecture des Systèmes d Information

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

Développement Logiciel

Introduction aux Technologies de l Internet

Une introduction à Java

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

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

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

Corrigé des exercices sur les références

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

Remote Method Invocation Les classes implémentant Serializable

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

Java DataBaseConnectivity

Programmation Par Objets

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

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

Internets. Informatique de l Internet: le(s) Internet(s) Composantes de l internet R3LR RENATER

Chapitre 10. Les interfaces Comparable et Comparator 1

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

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

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

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

Introduction : les processus. Introduction : les threads. Plan

Intergiciel - concepts de base

GENERALITES. COURS TCP/IP Niveau 1

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

Java Licence Professionnelle CISII,

INITIATION AU LANGAGE JAVA

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

OpenPaaS Le réseau social d'entreprise

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

Introduction à HTTP. Chapitre HTTP 0.9

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

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

Cours 1: Java et les objets

Un ordonnanceur stupide

Cours CCNA 1. Exercices

Introduction au langage Java

Packet Tracer : configuration des listes de contrôle d'accès étendues, scénario 1

PROGRAMMATION PAR OBJETS

NOTIONS DE RESEAUX INFORMATIQUES

Capture, Filtrage et Analyse de trames ETHERNET avec le logiciel Wireshark. Etape 1 : Lancement des machines virtuelles VMWARE et de Wireshark

TP1 : Initiation à Java et Eclipse

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

Java Naming and Directory Interface

Desktop Intégration. Rémi Forax

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

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Java - RMI Remote Method Invocation. Java - RMI

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

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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

Plan du cours. Historique du langage Nouveautés de Java 7

Mr. B. Benaissa. Centre universitaire Nâama LOGO

Premiers Pas en Programmation Objet : les Classes et les Objets

2. DIFFÉRENTS TYPES DE RÉSEAUX

Android UIThread, Thread, Handler et AsyncTask

Cisco Certified Network Associate

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

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

Réseaux et protocoles Damien Nouvel

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

Développement Web. Les protocoles

Package Java.util Classe générique

Plan. Programmation Internet Cours 3. Organismes de standardisation

Applet pour visualiser les variables «automate» notifiées

Culture informatique. Cours n 9 : Les réseaux informatiques (suite)

Serveurs de noms Protocoles HTTP et FTP

OS Réseaux et Programmation Système - C5

Transcription:

Chapitre 7 : Java et les réseaux La programmation réseau Java Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 1

Sommaire La programmation réseau Rappel Réseau Couches réseau et TCP-IP Notion de Socket Notion de Port La classe URL Les Sockets Java 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-2009 - Java Réseau - Version du cours 3.0 2

Rappel couches réseau et TCP/IP Source Christine Bulfone : Le client/serveu r et l API socket Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 3

Présentation de L API Socket Source Christine Bulfone : Le client/serveu r et l API socket Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 4

La notion de «socket» API (Application Program Interface) socket Mécanisme d'interface de programmation permet aux programmes dʼéchanger des données Les application ne voient les couches de communication quʼà travers lʼapi socket (abstraction) n'implique pas forcément une communication par le réseau le terme «socket» signifie douille, prise électrique femelle Une connexion est entièrement définie sur chaque machine par : le type de protocole (UDP ou TCP) l'adresse IP le numéro de port associé au processus serveur : port local sur lequel les connexions sont attendues client : allocation dynamique par le système Source Christine Bulfone : Le client/serveu r et l API socket Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 5

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) de 0 à1023 : ports réservés assignés par l'iana (Internet Assigned Numbers Authority) donnent accès aux services standard : > 1024 ports utilisateurs disponibles pour placer un service applicatif quelconque Source Christine Bulfone : Le client/serveu r et l API socket Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 6

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 java.net.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-2009 - Java Réseau - Version du cours 3.0 7

Sockets Java 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-2009 - Java Réseau - Version du cours 3.0 8

TCP/IP et les principaux services Application Présentation Session NIS NIS XDR XDR RPC RPC NFS NFS 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-2009 - Java Réseau - Version du cours 3.0 9

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-2009 - Java Réseau - Version du cours 3.0 10

Processus de Sockets Source Christine Bulfone : Le client/serveu r et l API socket Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 11

Processus de Sockets - 1 creation et initialisation d une Socket : appel de socket(...) Serveur Client Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 12

Processus de Sockets - 2 Établissement d un service sur un port de la machine serveur pour être visible du réseau : bind(...) bind() bind() Serveur Client Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 13

Processus de Sockets - 3 attente de connexions, le serveur est prêt : appel de listen(...) bind() bind() Serveur listen() listen() Client un un serveur Datagram sockets n utilise pas pas de de listen() :: il il n y n y a pas pas de de déroulement de de sessions Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 14

Processus de Sockets - 4 Un Client initialise une connexion à un service : appel de connect() bind() bind() Serveur listen() listen() connect() connect() session TCP création thread Client attente client suivant un un serveur serveur Datagram sockets n utilise 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-2009 - Java Réseau - Version du cours 3.0 15

Processus de Sockets - 5 le client et le serveur échangent leurs données : en général par des read() et write() dans un objet Stream Serveur Datagram bind() bind() sockets utilise utilise send() send() et et receive() plutôt plutôt que que read() listen() read() listen() et et write() write() connect() connect() session TCP création thread Client write() write() nbxlab attente client suivant read() read() read() read() 50 write() write() close() close() close() close() Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 16

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 bind() bind() Serveur listen() listen() connect() connect() session TCP création thread Client write() write() nbxlab attente client suivant read() read() read() read() 50 write() write() close() close() close() close() Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 17

Exemple de serveur /** un serveur tres simple qui renvoie ce * qu il reçoit : serveur miroir */ import java.io.*; import java.net.*; public class ServerMiroir { // Choisir un no de port non entre 1-1024 static final int port = 8080; public static void main(string[] args ) { try { 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( while (true) { socket.getoutputstream())); 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.close(); catch(exception e) { e.printstacktrace(); Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 18

Exemple de process serveur /** un serveur tres simple qui renvoie ce * qu il reçoit : serveur miroir */ import java.io.*; import java.net.*; public class ServerMiroir { // Choisir un no de port entre 1-1024 static final int port = 8080; public static void main(string[] args ) { try { Représente Représente la la connection connection ServerSocket s = new ServerSocket(port); System.out.println("Serv Started: " + s); // Blocks until a connection occurs: Socket socket = s.; System.out.println( "socket: "+ socket); BufferedReader in = new BufferedReader( Pas Pas d @ d @ IP IP : exécuté exécuté sur sur la la machine machine courante courante new InputStreamReader( socket.getinputstream())); PrintWriter out = new PrintWriter( new OutputStreamWriter( while (true) { socket.getoutputstream())); 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.close(); catch(exception e) { e.printstacktrace(); sinon sinon le le buffer buffer n est n est pas pas écrit écrit sur sur le le réseau réseau tant tant qu il qu il n est n est pas pas plein plein appel appel automatique automatique à tostring() tostring() socket: socket: [addr=207.0.0.1, port=1077, port=1077, localport=8080] Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 19

Exemple de process Client /** Un client tres simple qui envoie n * lignes au serveur et lit n ligne */ import java.io.*; import java.net.*; public class ClientMiroir { static final int port = 8080; public static void main(string args[]) { try { // 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.close(); catch(exception e) { e.printstacktrace(); Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 20

Gestion de plusieurs clients pour le serveur import java.io.*; import java.net.*; class ServerMiroir extends Thread { private Socket socket; private BufferedReader in; private PrintWriter out; ServerMiroir (Socket s) { socket = s; try { in = new BufferedReader( new...); out = new PrintWriter( new...); catch(ioexception e) {... start(); // Calls run() public void run() { try { while (true) { //lire s = in.readline System.out.println("closing..."); in.close(); out.close(); socket.close(); catch (IOException e) {... public class MultiServerMiroir { static final int port = 8080; public static void main(string[] args ) { try { 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-2009 - Java Réseau - Version du cours 3.0 21

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