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

Slides:



Advertisements
Présentations similaires
Le mécanisme des exceptions
Advertisements

SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Objets Distribués et Composants
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
Retour sur RMI.
1 Plan de lenseignement Cours Introduction au réseau via les objets distants (Application à RMI) Ce que cache RMI : programmation socket – mode connecté
Programmation Réseaux Illustration : Les Sockets en Java
Communication par diffusion : Multicast
1 I. Bus logiciel ? Mireille Blay-Fornarino Daprès et Sacha Et (cf. références en bas.
Des sockets à RMI Programmation réseau versus programmation objet
Objets Distribués Chronique dune invasion annoncée Pourquoi? Comment? Qui : Corba / COM-DCOM / Java RMI...
Programmation Réseaux Illustration : Les Sockets en Java
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
Communication par diffusion : Multicast Clientn Serveur Client1 Client2 Gr.
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
Les Sockets et Java Cours Harmonisation Anne-Marie Déry.
Objets Distribués Chronique d ’une invasion annoncée
Module SI4 Applications réparties
Des sockets à RMI. Pourquoi ? Maturation de la technologie orientée objet –ADA, Modula –Smalltalk, C++, Java Maturation des communications Client- Serveur.
Des sockets à RMI.
À travailler seuls Département SI AM Dery Concepts généraux
À travailler seuls Département SI AM Dery Concepts généraux
Programmation Réseaux Illustration : Les Sockets en Java Anne-Marie Déry À travailler seuls Concepts généraux Mise en œuvre Java.
Programmation Réseaux Illustration : Les Sockets en Java Anne-Marie Déry À travailler seuls Concepts généraux Mise en œuvre Java.
Des sockets à RMI. Pourquoi ? Maturation de la technologie orientée objet –ADA, Modula –Smalltalk, C++, Java Maturation des communications Client- Serveur.
Introduction aux applications réparties
Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
Programmer en JAVA par Tama
Programmation Objet en JAVA Cours 9 : Réseau R. M

À travailler seuls Concepts généraux Mise en œuvre Java Année
Introduction aux services WEB
Etude des Technologies du Web services
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
JDBC ou comment manipuler une base de données en Java ?
Communication entre processus - TCP From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre.
À travailler seuls Concepts généraux Mise en œuvre Java Année
Introduction à la programmation objet Langage Java
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Objets Distribués Chronique d’une invasion annoncée Pourquoi? Comment?
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
IFT 6800 Atelier en Technologies d’information
COURS DE PROGRAMMATION ORIENTEE OBJET :
1212 Entrée et sortie de fichiers Objectifs À la fin de ce cours, vous serez capables de : • Lire à partir de la console • Écrire sur la console.
Présentation de CORBA et de IIOP
Développement d’application client/serveur
Communication entre processus From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre.
Factory Design Patterns. Contents Factory patterns: principesFactory patterns: principes The Factory Method patternThe Factory Method pattern The Abstract.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 6 – Exceptions.
Mastère MIAGE, 2006 Systèmes Distribués Fabrice Huet
Cours Les flux ou streams. Cours 162 Flux : objet possédant des méthodes capables de lire ou écrire des flots d’octets sur tout support (mémoire,
Systèmes distribués Plusieurs technologies existent : Les sockets
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Entrées / Sorties.
Les sockets.
Schéma de conception Factory Method Exemple Sylvain Giroux.
Les RPC remote procedure call
Master 1 SIGLIS Intégration des données dans l’entreprise Stéphane Tallard JDBC: Java Database Connectivity Master 1 SIGLIS1JDBC.
Ingénierie des réseaux - Chapitre 2 bis Les sockets en Java
PaCO++ André Ribes Réunion Hydrogrid Rennes 15/09/03.
Programmation Réseaux Qu’avez-vous retenu ? Anne-Marie Déry À travailler seuls Concepts généraux Mise en œuvre Java.
Architecture Client/Serveur
L. Gurret – M. Herve – P. Mignon – J. Prarioz. Introduction  Dernière étape d’analyse  Cahier des charges, spécifications et conception orientée objet.
Modèle à objets et sérialisation Olivier ChamlaFrançois Chastanet.
Java Remote Method Invocation
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
Applications distribuées Introduction Jean-Jacques LE COZ.
Transcription de la présentation:

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

Définir un nouveau type de socket Pourquoi ? Préparer les données avant de les envoyer Reconstruire les données reçues Exemple Java RMI Sockets spécialisées (marshalling et unmarshalling) Exemple Images : Compression et Décompression Comment ? En spécialisant les classes de base

Comment Définir un nouveau type de Sockets La classe CompressionSocket et ses classes relatives 4 étapes Communication TCP Définir des E/S Spécifiques 1. Etendre java.io.FilterOutputStream pour créer un output stream pour ce type de Socket. Surcharge de méthodes si nécessaire. Le write doit compresser limage avant décrire 2. Etendre java.io.FilterInputStream Le read doit décompresser après avoir lu

Comment Définir un nouveau type de Sockets La classe CompressionSocket et ses classes relatives 4 étapes 3. Etendre java.net.Socket Implémenter les constructeurs appropriés et surcharger getInputStream, getOutputStream et close. 4. Etendre java.net.ServerSocket Implémenter le constructeur et surcharger accept pour créer un socket du bon type.

Un « nouveau » Package : java.nio Les principales nouveautés de cette API sont : Buffers : qui explicitent la notion de buffers – containers de données –Améliorent les problème de bufferisation liées aux E/S Charsets : qui associent des « décodeurs » et des « encodeurs » qui gèrent correctement les conversions chaines – octets –Éliminent les problème de accent (caractères Unicode / UTF),

Un « nouveau » Package : java.nio Channels : qui représentent des connexions entre entités avec de meilleures performances pour les opérations de lecture et décriture Selectors et selection keys : associées aux selectable channels définissent des E/S multiplexées non bloquantes –évitent les threads

Le package Channel SelectableChannel : canal qui peut être multiplexé DatagramChannel Un canal dédié aux communication UDP prises en charge par des sockets de type java.net.DatagramSocket ServerSocketChannel : Un canal dédié aux connexion TCP prises en charge par des sockets de type java.net.ServerSocket SocketChannel : Un canal dédié aux communication TCP prises en charge par des sockets de type java.net.Socket

Le package Channel Et aussi… Selector Un multiplexeur pour des SelectableChannel SelectionKey représentant un canal étiqueté pour le multiplexage Pipe Deux canaux pour construire un pipe unidirectionnel (| shell)

Les nouvelles sockets Ce package définit des classes de canaux qui sont utilisables par les classes de sockets : – DatagramSocket, –ServerSocket, et Socket de java.net package. –In all cases, un canal est créé par appel à une méthode statique open définie dans chaque classe. – La socket est créée par egget de bord.

Exemple : Serveur dheure import java.io.*; import java.net.*; import java.nio.*; import java.nio.channels.*; import java.nio.charset.*; import java.util.*; import java.util.regex.*;

Exemple : initialisations public class TimeServer { private static int PORT = 8013; private static int port = PORT; // Charset and encoder for US-ASCII private static Charset charset = Charset.forName("US- ASCII"); private static CharsetEncoder encoder = charset.newEncoder(); // Direct byte buffer for writing private static ByteBuffer dbuf = ByteBuffer.allocateDirect(1024);

Exemple : attente de connexion sur le port du service // Open and bind the server-socket channel private static ServerSocketChannel setup() throws IOException { ServerSocketChannel ssc = ServerSocketChannel.open(); InetSocketAddress isa = new InetSocketAddress(InetAddress.getLocalHost(), port); ssc.socket().bind(isa); return ssc; }

Exemple : communication avec un client // Service the next request to come in on the given channel // private static void serve(ServerSocketChannel ssc) throws IOException { SocketChannel sc = ssc.accept(); try { String now = new Date().toString(); sc.write(encoder.encode(CharBuffer.wrap(now + "\n"))); System.out.println(sc.socket().getInetAddress() + " : " + now); sc.close(); } finally { // Make sure we close the channel (and hence the socket) sc.close(); } }

Exemple : code du serveur public static void main(String[] args) throws IOException { if (args.length > 1) { System.err.println("Usage: java TimeServer [port]"); return; } // If the first argument is a string of digits then we take that // to be the port number if ((args.length == 1) && Pattern.matches("[0-9]+", args[0])) port = Integer.parseInt(args[0]); ServerSocketChannel ssc = setup(); for (;;) serve(ssc); } }

Conclusion Une large bibliothèque pour traiter les sockets et différents types de communication entre Clients et Serveurs dans Java Une extension naturelle par abstraction à lappel de méthodes à distance - Java RMI et une normalisation Corba avec lintégration dun ORB (cf aaplications réparties 2 nd semestre) et maintenant les EJB : Entreprise Java Beans

Retour sur RMI

Exemple CLIENT Essifun SERVEUR de Surnoms oter infrastructure Protocole dapplication ?

Communication client serveur CLIENT SERVEUR Préparation de la requête Envoi de la requête Attente du résultat …. Analyse du résultat reçu Connexion au serveur Attente de requêtes Analyse de la requête ….. Exécution …. Préparation de la réponse Envoi de la réponse

Exemple : annuaire des surnoms EssiFun SERVEUR de Surnoms enregistrer(« paul », « bug ») marshalling unmarshalling enregistrer(« paul », « bug ») = TRUE TRUE 1:Paul:bug ou ENR/nPaul/n/bug/n ou Objet Requête Seriablizable Différence entre un transport TCP et UDP pour le codage des données ?

Que peut on automatiser ? Au minimum, la phase de marshalling/unmarshalling (hétérogéneité des langages, des systèmes, etc) Selon les cas, le squelette du serveur les appels distants du client

Exemple : annuaire des surnoms et RMI enregistrer lister oter AnnuaireEssi listePersonnes Enregistrer(AnneMarie,AM) lister()

Exemple : annuaire des surnoms interface : partie visible de lobjet (enregistrer, oter, lister, …) implémentation : partie privée inaccessible depuis dautres objets (listePersonnes : un vecteur de Personne ou un tableau ou ….) interface = contrat entre lobjet et le monde extérieur (save impossible par exemple)

RMI public interface Surnoms extends java.rmi.Remote { public Boolean enregistrer(String nom, String surnom) throws java.rmi.RemoteException, ServeurSurnoms.surnoms.ExisteDeja ; …. }

Générateurs RMIC / Orbix... IDL Int. Java Spécifications des données Générateurs Fichiers générés Stubs Skeletons Proxy (mise en œuvre de la sérialisation et désérialisation…)

RMI Classes et Interfaces ClasseLocale SoucheSquelette ClasseDistante InterfaceDistante Remote Appel méthode m() Machine localeMachine distante InterfaceDistante

Interaction Client Enregistreur client serveur clientregistre Lookup : où est objetDistant ? stub Il est ici Envoyez le stub Le voici stubsquelette objet Distant result = objetDistant.m() result RMIRegistry + ClassLoader

Exemple : annuaire des surnoms XDR et RPC de SUN Protocole := CHOICE { enregistrerReq [0] SEQUENCE{PrintableString nom, PrintableString surnom} enregistrerRep[1] BOOLEAN, listerReq [2] NULL, listerRep [3] SET OF Personnes, ….} Programme surnoms { version { boolean enregistrer(nomSurnom) = 1; listePersonnes lister(void)=2 }= 1 } = ASN.1 et norme ISO

Générateurs de Stubs RPCGEN / MAVROS ASN1 XDR Librairie marshalling et unmarshalling squelettes du client et du serveur Spécifications des données Générateurs Types de données C Lisp Java Types de données C Fichiers générés

Les points communs des approches distribuées Adressage : à tout serveur (objet ou programme) doit être affecté une référence unique Transport : pour établir une communication entre 2 nœuds et transmettre une requête Marshalling : transformation de la requête pour passer sur le réseau

Points communs Protocol : transmission des requêtes entre exécutables Dispatching : gestion des threads Des services communs Services de nommage Interface repository.....

Restent à approfondir

Communication réseaux et Internet Couches de transport Différences entre UDP et TCP (Développement dun serveur multicast Ack/NoAck pour gérer la perte des paquets UDP) Dautres protocoles (RTP/RTCP) (introduction du routage multicast ou du tunelling) Principes du IP / protocole ICMP Service de nommage DNS Configuration services réseau

Introduction au Réseaux Locaux LANs Configuration carte réseau dune machine, Développement dun analyseur de trafic et standards IEEE 802 : IEEE et Ethernet Configuration dun Firewall : IPTables, Spécificités des Réseaux Locaux Heureusement Dino est là :-)

Quelques interrogations ? Comment choisir le bon middleware (intergiciel) ? Il y en a de plus en plus Corba, RMI, DCOM, DSA + CCM, J2EE + Web Services,.net.... Savoir les comparer Identifier les points communs Interopérabilité : XML une solution suffisante ? Heureusement Mireille est là