La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Communication par diffusion : Multicast application Clientn Serveur application Client1 application Client2 Gr.

Présentations similaires


Présentation au sujet: "Communication par diffusion : Multicast application Clientn Serveur application Client1 application Client2 Gr."— Transcription de la présentation:

1 Communication par diffusion : Multicast application Clientn Serveur application Client1 application Client2 Gr

2 Ouvrir un socket = demander à se Connecter Les clients demandent seulement à joindre un groupe

3 Exemple de multicast Un serveur de citation qui envoie une citation toutes les minutes à tous les clients qui écoutent (multicast)

4 Créer un paquet de sortie Préparer et Envoyer une donnée Scénario dun serveur Fermer le socket d entrée Créer le socket d entrée

5 Scénario dun client Création d un paquet d entrée Attente de données en entrée Réception et traitement des données en entrée Fermer le socket d entrée Créer le socket d entrée

6 Classe MulticastServer Des constructeurs : par défaut, port à utiliser Des accesseurs en lecture : adresse du groupe (getInterface…) Des méthodes : pour envoyer un paquet datagramme, pour joindre ou quitter un groupe (send, joinGroup, leaveGroup)

7 Multicast: MulticastSocket Type de socket utilisé côté client pour écouter des paquets que le serveur « broadcast » à plusieurs clients.. Une extension du QuoteServer : broadcast à intervalle régulier à tous ses clients Le serveur a un nouveau nom et crée un MulticastServerThread qui contient le cœur du serveur. import java.io.*; public class MulticastServer { public static void main(String[] args) throws IOException { new MulticastServerThread().start(); }

8 public class MulticastServerThread extends QuoteServerThread {... } utilisation du constructeur par héritage et héritage de variables et de la méthode getNextQuote

9 Une nouvelle méthode RUN public void run() { while (moreQuotes) { try { byte[] buf new byte[256]; // don't wait for request...just send a quote String dString = null; if (in == null) dString = new Date().toString(); else dString = getNextQuote(); buf = dString.getBytes(); InetAddress group = InetAddress.getByName(" "); DatagramPacket packet; packet = new DatagramPacket(buf, buf.length, group, 4446); socket.send(packet); try {sleep((long)Math.random() * FIVE_SECONDS); } catch (InterruptedException e) { } } catch (IOException e) { e.printStackTrace(); moreQuotes = false;} } socket.close();}

10 Différences principales Le DatagramPacket est construit à partir de de « ladresse de plusieurs clients » L adresse et le no de port sont câblés no de port 4446 (tout client doit avoir un MulticastSocket lié à ce no). Ladresse InetAddress " " correspond à un identificateur de groupe et non à une adresse Internet de la machine dun client Le DatagramPacket est destiné à tous les clients qui écoutent le port 4446 et qui sont membres du groupe " ".

11 Un nouveau Client Pour écouter le port 4446, le programme du client doit créer son MulticastSocket avec ce no. Pour être membre du groupe " " le client adresse la méthode joinGroup du MulticastSocket avec ladresse didentification du groupe. Le serveur utilise un DatagramSocket pour faire du broadcast à partir de données du client sur un MulticastSocket. Il aurait pu utiliser aussi un MulticastSocket. Le socket utilisé par le serveur pour envoyer le DatagramPacket nest pas important. Ce qui est important pour le broadcast est dadresser linformation contenue dans le DatagramPacket, et le socket utilisé par le client pour lécouter.

12 MulticastSocket socket = new MulticastSocket(4446); InetAddress group = InetAddress.getByName(" "); socket.joinGroup(group); DatagramPacket packet; for (int i = 0; i < 5; i++) { byte[] buf = new byte[256]; packet = new DatagramPacket(buf, buf.length); socket.receive(packet); String received = new String(packet.getData()); System.out.println("Quote of the Moment: " + received); } socket.leaveGroup(group); socket.close();

13 Synthèse ClientServeur TCPaSocketaServerSocket connectéwriteread readwrite UDPaDatagramSocketaDatagramSocket non connecté sendreceive receivesend MulticastaMulticastSocketaDatagramSocket/ aMulticastSocket receivesend I/O Stream aDatagramPacket

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

15 Comment Définir un nouveau type de Sockets La classe CompressionSocket et ses classes relatives 4 étapes 1. Etendre java.io.FilterOutputStream pour créer un output stream pour ce type de Socket. Surcharge de méthodes si nécessaire. 2. Etendre java.io.FilterInputStream 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.

16 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 et maintenant les EJB : Entreprise Java Beans et JINI …..

17 Retour sur RMI

18 Exemple CLIENT Essifun SERVEUR de Surnoms oter infrastructure

19 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

20 Exemple : annuaire des surnoms EssiFun SERVEUR de Surnoms enregistrer(« paul », »bug ») marshalling unmarshalling enregistrer(« paul », »bug ») TRUE 1:Paul:bug ou ENR/nPaul/n/bug/n ou Objet Requête Seriablizable

21 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

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

23 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)

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

25 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…)

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

27 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

28 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

29 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

30 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

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

32 Reste à approfondir

33 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, routage IP et DNS dune machine.....

34 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 TD 7 : Configuration dun Firewall : IPTables, Développement dun analyseur de trafic (suite) (101) Réseaux LocauxRseaux Locaux Spécificités des Réseaux Locaux

35 Réseaux Locaux cours 6 : Introduction aux LANs et standards IEEE 802 TD 6 : Configuration carte réseau dune machine, Développement dun analyseur de trafic Réseaux Locaux cours 7 : IEEE et Ethernet TD 7 : Configuration dun Firewall : IPTables, Développement dun analyseur de trafic (suite) (101) Réseaux Locaux cours 8 : IEEE et Ethernet TP Evalué

36 La communication réseaux et Internet Internet cours 1 : IP TD 1 : Introduction aux sockets BSD (et winsock sous windows) (NNN) Internet cours 2 : TCP/UDP TD 2 : Développement dun serveur multicast Ack/NoAck pour gérer la perte des paquets UDP (NNN) Internet cours 3 : TCP/UDP (suite) et exemple dautres protocoles (RTP/RTCP) TD 3 : Développement dun serveur multicast Ack/NoAck (suite), introduction du routage multicast ou du tunelling (NNN) Internet cours 4 : Routage IP / protocole ICMP TD 4 : Programmation du ping (messages ICMP) + export (JNI) en Java Internet : cours 5 : DNS TD 5 : Configuration services réseau, routage IP et DNS dune machine

37 Réseaux Locaux cours 6 : Introduction aux LANs et standards IEEE 802 TD 6 : Configuration carte réseau dune machine, Développement dun analyseur de trafic Réseaux Locaux cours 7 : IEEE et Ethernet TD 7 : Configuration dun Firewall : IPTables, Développement dun analyseur de trafic (suite) (101) Réseaux Locaux cours 8 : IEEE et Ethernet TP Evalué

38 Conclusion Problèmes dintégration et dinteropérabilité entre le monde Microsoft et le reste Arrivée de internet –Effort dinteropérabilité et defficacité –RMI et Corba en Java Des nouveautés avec les composants –les Enterprise Java Beans –Corba Components –et aussi C# et net Affaire à suivre

39 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 ?

40 Des Critères de Comparaisons Autour du concept objet ? Communication synchrone ou asynchrone ? Description via des interfaces ou des messages ? Communication directe ou indirecte ? Spécifique ou indépendant langage ? Possibilité de transformation de messages ou non ? Protocole de communication binaire ou textuelle ? Prise en compte de QoS ou non ? (transaction, sécurité....)

41 Comment faire interopérer les middlewares ? Aller vers un middleware standard ? (J2EE / Corba) Construire une couche au dessus des middlewares ? des familles de middlewares, des middlewares génériques (Jonathan, PolyOrb,...) Avoir une approche architecturale ? des design patterns Faire interopérer des middlewares existants? M2M

42 Lavenir ? Après les approches par composants, des middlewares au dessus de JMS Une réflexion de plus haut niveau pour sortir les schémas communs extérioriser quand et comment on les utilise ne pas confondre les problèmes avec XML

43 Les points communs des middlewares en objets distribués Adressage : à tout objet 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 Protocol : transmission des requêtes entre exécutables

44 Les points communs des middlewares en objets distribués Activation : activer les implémentations des objets Dispatching : gestion des threads Des services communs Services de nommage Interface repository.....

45 Un bref comparatif OrigineMicrosoftOMGJavaSoft ArchiCOM DCOM IDL ORB IIOP Java RMI Applet InterfacesIUNKnown prédéfinies Définies en IDL Définies en Java

46 Un bref comparatif Interface+Agrégation composition Héritage extends LangageC++C Smalltalk Java Infrastr.Proxy stub Stub skeleton Proxy R O

47 Un bref comparatif ServeurAppli DLL Appli Biblio BDD Appli Java ClientAppli DLL Appli Biblio BDD Appli Java Applets CréationIFactoryInstancié en LOO Instancié En Java

48 Un bref comparatif Appel dyn. IDispatchDIIIntrosp. beans Ident.Reg. OLEService de nommage URL Comm.DCOM DCE IIOPRMI (TCP/IP)

49 Conclusion Problèmes dintégration et dinteropérabilité entre le monde Microsoft et le reste Arrivée de internet –Effort dinteropérabilité et defficacité –RMI et Corba en Java Des nouveautés avec les composants –les Enterprise Java Beans –Corba Components –et aussi C# et net Affaire à suivre


Télécharger ppt "Communication par diffusion : Multicast application Clientn Serveur application Client1 application Client2 Gr."

Présentations similaires


Annonces Google