Applications distribuées et parallèlisme La communication ne doit pas rester bloquée pour un client.

Slides:



Advertisements
Présentations similaires
Programmation réseau Les sockets de Berkeley
Advertisements

Le mécanisme des exceptions
Cours réseaux Essi2 Anne-Marie Déry
Programmation Réseaux Illustration : Les Sockets en Java
Programmation Réseaux Illustration : Les Sockets en Java
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.
Communication par diffusion : Multicast
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 Programmation réseau versus programmation objet
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
Communication par diffusion : Multicast Clientn Serveur Client1 Client2 Gr.
Les Sockets et Java Cours Harmonisation Anne-Marie Déry.
Des sockets à RMI. Pourquoi ? Maturation de la technologie orientée objet –ADA, Modula –Smalltalk, C++, Java Maturation des communications Client- Serveur.
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.
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Mode Message Asynchrone (interface Socket)
Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
Cours 6 : XML et les architectures N-tiers – Tier Applicatif

Servlet JAVA.
FLSI602 Génie Informatique et Réseaux
À travailler seuls Concepts généraux Mise en œuvre Java Année
Parallel Programming in C with MPI and OpenMP
1 Le protocole UDP Dominique SERET. Octobre 2000 Dominique SERET - Université René Descartes 2 UDP : User Datagram Protocol n UDP : protocole de transport.
Common Gateway Interface
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
COURS DE PROGRAMMATION ORIENTEE OBJET :
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.
Labview Programmation réseau Communication par sockets
JDBC ou comment manipuler une base de données en Java ?
Le protocole FTP.
Communication entre processus - TCP From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre.
Programmation concurrente
CSI2520, Hiver 2007 Programmation concurrente. CSI2520, Hiver 2007 Programmation concurrente La programmation est distribuée lorsque les processus ne.
IFT 6800 Atelier en Technologies d’information
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
COURS DE PROGRAMMATION ORIENTEE OBJET :
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
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.
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.
Structures de données avancées : Concepts réseaux et protocole de communication. D. E ZEGOUR Institut National d ’Informatique.
NSY107 - Intégration des systèmes client-serveur Cours du 20/05/ début 27/05/2006 (4 à 6 heures) © Emmanuel DESVIGNE Document sous licence libre.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 6 – Exceptions.
Les listes de contrôle d’accès
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,
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Programmation Système et Réseau
Les Réseaux Informatiques Clients & Serveurs Le protocole FTP Laurent JEANPIERRE DEUST AMMILoR.
Les sockets.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Schéma de conception Factory Method Exemple Sylvain Giroux.
PLAN Correction du RUSH 3
Les Réseaux Informatiques
Couche transport du modèle OSI
Ingénierie des réseaux - Chapitre 2 bis Les sockets en Java
Réseaux Informatiques
Introduction à la programmation objet avec java
Ingénierie des réseaux
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.
Synthèse: une journée dans la vie d'une requête Web 5: DataLink Layer5-1.
Client/Server Socket. Client/Serveur.
Département Informatique Les Réseaux Informatiques Couche Transport Protocoles UDP & TCP Laurent JEANPIERRE.
TP N°4 Développement d’ une application
Transcription de la présentation:

Applications distribuées et parallèlisme La communication ne doit pas rester bloquée pour un client

Programmation socket avec TCP Le Client doit contacter le serveur Le processus serveur doit être en train de sexécuter Le serveur doit avoir créé un socket qui devient le point dentrée des clients Le Client contacte le serveur en Créant un socket TCP client- localement Spécifiant laddresse et le no de port number du processus serveur Lorsque le client crée le socket: le client TCP établit une connexion avec le serveur TCP Lorsque le client le contacte le serveur TCP crée une nouvelle socket pour que le processus serveur communique avec le client –Permet de parler avec plusieurs clients

Interaction Client/server : socket TCP Serveur (sexécutant sur lhôte) Client wait for incoming connection request connectionSocket = welcomeSocket.accept() create socket, port= x, for incoming request: welcomeSocket = ServerSocket() create socket, connect to hostid, port= x clientSocket = Socket() close connectionSocket read reply from clientSocket close clientSocket send request using clientSocket read request from connectionSocket write reply to connectionSocket TCP connection setup

Plusieurs Clients Utiliser des threads pour accepter plusieurs clients simultanément. Le serveur gère un thread par client

Plusieurs clients application Clientn Serveur Ouvrir connexion application Client1 application Client2 S1 S2 Sn

Quelques mots sur les Threads Un thread permet lexécution dun programme. Une application peut avoir de multiples threads qui s exécutent concurremment (Chaque thread a une priorité). Chaque thread a un nom. Plusieurs threads peuvent avoir le même. Le nom est généré si non spécifié. Il y a 2 façons de créer un nouveau thread dexécution. déclarer une sous classe de Thread et surcharger la méthode run. Une instance de la sous classe peut alors être allouée et démarrer. déclarer une classe qui implémente Runnable et donc la méthode run. Une instance de la classe peut être allouée, passée comme argument à la création dun thread et démarrée.

Un thread qui calcule des primes class PrimeThread extends Thread { long minPrime; PrimeThread(long minPrime) { this.minPrime = minPrime; } public void run() { // compute primes larger than minPrime... } PrimeThread p = new PrimeThread(143); p.start();

while (true) { accept a connection ; create a thread to deal with the client ; end while Scénario du Serveur Multithreadé

public class MultiServerThread extends Thread { private Socket socket = null; public MultiServerThread(Socket socket) { super("MultiServerThread"); this.socket = socket; } public void run() { try { PrintWriter out = new PrintWriter(socket.getOutputStream(), true); BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream())); …… } out.close(); in.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } }

public class MultiServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket = null; boolean listening = true; try { serverSocket = new ServerSocket(4444); } catch (IOException e) { System.err.println("Could not listen on port: 4444."); System.exit(-1); } while (listening) new MultiServerThread(serverSocket.accept()).start(); serverSocket.close(); } }

Ce que RMI ne sait pas vraiment faire ? Communication asynchrone par messages Communication par diffusion

Communication par message : Envoi de datagrammes application opération Client Serveur req1 rep1 reqn repn

Programmation Socket avec UDP UDP: pas de connexion entre le client et le serveur Pas de lien privilégié entre le client et le serveur Lemetteur attache ladresse IP et le port pour le retour. Le serveur doit extraire ladresse IP et le port de lexpéditeur à partir du datagramme reçu application viewpoint UDP fournit un transfert non fiable de groupes doctets (datagrammes) entre un client et le serveur UDP: les données transmises peuvent être reçues dans le désordre ou perdues

Client/server socket interaction: UDP close clientSocket Serveur read reply from clientSocket create socket, clientSocket = DatagramSocket() Create, address ( hostid, port=x, send datagram request using clientSocket create socket, port= x, for incoming request: serverSocket = DatagramSocket() read request from serverSocket write reply to serverSocket specifying client host address, port umber Client

Scénario dun serveur Création d un paquet d entrée Attente de données en entrée Réception et Analyse des données en entrée Calcul Création dun paquet de sortie Préparation et Envoi de la réponse Fermer le socket d entrée Créer le socket d entrée

Scénario dun client Créer un paquet de sortie Préparer et Envoyer une requête Créer un paquet dentrée Attendre des données en entrée les recevoir et les traiter Fermer le socket d entrée Créer le socket d entrée

Datagrammes UDP et Sockets 2 classes : DatagramPacket et DatagramSocket Datagramme = un message indépendant envoyé sur le réseau arrivée, temps darrivée et contenu non garantis packages dimplémentation de communication via UDP de datagrammes

Exemple Un serveur de citation qui écoute un socket type datagram et envoie une citation si le client le demande Un client qui fait simplement des requêtes au serveur ATTENTION Plusieurs firewalls et routeurs sont configurés pour interdire le passage de paquets UDP

Une Application Client Serveur Le serveur reçoit en continu des paquets mode datagramme sur un socket un paquet reçu = une demande de citation dun client le serveur envoie en réponse un paquet qui contient une ligne "quote of the moment" Lapplication cliente envoie simplement un paquet datagramme au serveur indiquant quil souhaite recevoir une citation et attend en réponse un paquet du serveur.

La classe QuoteServer socket = new DatagramSocket(4445); Création dun DatagramSocket sur le port 4445 qui permet au serveur de communiquer avec tous ces clients try { in = new BufferedReader(new FileReader("one-liners.txt")); } catch (FileNotFoundException e) System.err.println("Couldn't open quote file. " + "Serving time instead."); } Le constructeur ouvre aussi un BufferedReader sur un fichier qui contient une liste de citations ( une citation par ligne)

suite contient une boucle qui tant quil y a des citations dans le fichier attend larrivée d un DatagramPacket correspondant à une requête client sur un DatagramSocket. Byte[] buf = new byte[256]; DatagramPacket packet = new DatagramPacket(buf, buf.length); socket.receive(packet); En réponse une citation est mise dans un DatagramPacket et envoyée sur le DatagramSocket au client demandeur. String dString = null; if (in == null) dString = new Date().toString(); else dString = getNextQuote(); buf = dString.getBytes(); InetAddress address = packet.getAddress(); int port = packet.getPort(); packet = new DatagramPacket(buf, buf.length, address, port); socket.send(packet);

Suite Adresse Internet + numéro de port (issus du DatagramPacket ) = identification du client pour que le serveur puisse lui répondre Larrivée du DatagramPacket implique une requête ->contenu du buffer inutile Le constructeur utilisé pour le DatagramPacket : un tableau doctets contenant le message et la taille du tableau + Ladresse Internet et un no de port. Lorsque le serveur a lu toutes les citations on ferme le socket de communication. socket.close();

La classe QuoteClient envoie une requête au QuoteServer, attend la réponse et affiche la réponse à lécran. Variables utilisées : int port; InetAddress address; DatagramSocket socket = null; DatagramPacket packet; byte[] sendBuf = new byte[256]; Le client a besoin pour s exécuter du nom de la machine sur laquelle tourne le serveur if (args.length != 1) { System.out.println("Usage: java QuoteClient "); return; }

La partie principale du main Création d un DatagramSocket DatagramSocket socket = new DatagramSocket(); Le constructeur lie le Socket à un port local libre Le programme envoie une requête au serveur byte[] buf = new byte[256]; InetAddress address = InetAddress.getByName(args[0]); DatagramPacket packet = new DatagramPacket(buf, buf.length, address, 4445); socket.send(packet); Ensuite le client récupère une réponse et laffiche

Classe DatagramSocket Des constructeurs : par défaut, + no port + Adresse Inet Des accesseurs en lecture : adresse à laquelle le socket est lié, est connecté, le no port auquel il est lié, connecté, taille du buffer reçu ou envoyé (getInetAddress, getLocalAddress, getPort, getLocalPort, getReceivedBufferSize, getSendBufferSize…) Des méthodes : pour se connecter à une adresse, pour se déconnecter, pour envoyer un paquet datagramme, pour un recevoir un paquet datagramme (connect, disconnect, send, receive)

Classe DatagramPacket Des constructeurs : buffer + longueur de buffer + adresse destination + port… Des accesseurs en lecture : adresse à laquelle le paquet est envoyé, le no port à laquelle le paquet est envoyé, la donnée transmise (getAddress, getPort, getData, getLength…)

Petite comparaison UDP TCP

Services fournis par les protocoles de transport Internet Service TCP : connection-oriented: setup required between client, server reliable transport between sending and receiving process flow control: sender wont overwhelm receiver congestion control: throttle sender when network overloaded does not providing: timing, minimum bandwidth guarantees Service UDP : unreliable data transfer between sending and receiving process does not provide: connection setup, reliability, flow control, congestion control, timing, or bandwidth guarantee

Exigence de transport des applications communes Time Sensitive no yes, 100s msec yes, few secs yes, 100s msec yes and no Application file transfer Web documents real-time audio/video stored audio/video interactive games financial apps Data loss no loss loss-tolerant no loss Bandwidth elastic audio: 5Kb-1Mb video:10Kb-5Mb same as above few Kbps up elastic

Protocoles Internet des applications et protocoles de transport associés Application remote terminal access Web file transfer streaming multimedia remote file server Internet telephony Application layer protocol smtp [RFC 821] telnet [RFC 854] http [RFC 2068] ftp [RFC 959] proprietary (e.g. RealNetworks) NSF proprietary (e.g., Vocaltec) Underlying transport protocol TCP TCP or UDP typically UDP