Les sockets.

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 8 Langage HTML.
Sérialisation des objets
Le mécanisme des exceptions
A propos de java Sun, fin 1995 C++ nettoyé semi-interprété
Cours réseaux Essi2 Anne-Marie Déry
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.
Programmation Réseaux Illustration : Les Sockets en Java Anne-Marie Déry À travailler seuls Concepts généraux Mise en œuvre Java.
1 I. Bus logiciel ? Mireille Blay-Fornarino Daprès et Sacha Et (cf. références en bas.
Applications distribuées et parallèlisme La communication ne doit pas rester bloquée pour un client.
Communication par diffusion : Multicast Clientn Serveur Client1 Client2 Gr.
Les Sockets et Java Cours Harmonisation Anne-Marie Déry.
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.
Introduction aux applications réparties
Mode Message Asynchrone (interface Socket)
(Classes prédéfinies – API Java)
Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
Les technologies XML Cours 3 : Les APIS XML Janvier Version 1.0 -
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance

JSP Java Server Pages. Introduction Afin dimplémenter les règles métiers, coté serveur dans une application Web, larchitecture Java propose trois solutions.
Servlet JAVA.
UDP – User Datagram Protocol
Etude des Technologies du Web services
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 ?
Les instructions PHP pour l'accès à une base de données MySql
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
Système d’Exploitation
Communication entre processus - TCP From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, © Addison-Wesley 2001 Chapitre.
Programmation Orienté Objet applications au langage Java
1 Les paquetages («packages»). 2 L'objectif avec les paquetages («packages») est de rendre accessibles aux utilisateurs des classes définies par d'autres.
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
Une introduction à Java
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
Sommaire Dans ce chapitre, nous aborderons :
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.
Suite.
Développement d’application client/serveur
11/04/ L'héritage Cours 7 Cours 7.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 6 – Exceptions.
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.
Module 4 : Résolution de noms
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
Advisor Advanced IP Présentation Télémaintenance Télésurveillance.
Entrées / Sorties.
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.
Couche transport du modèle OSI
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
Introduction à la programmation objet avec 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.
Java Remote Method Invocation
Client/Server Socket. Client/Serveur.
Sockets/rmi - Y. Bekkers1 Applications réparties en Java Paquetage java.net – Sockets Objets distants transparents – RMI Yves Bekkers.
TP N°4 Développement d’ une application
Transcription de la présentation:

Les sockets

Rappel du schéma client-serveur Appel synchrone requête-réponse Mise en œuvre 1-Haut niveau : intégration dans un langage de programmation : RPC (construit sur sockets) Exemple : RPC en C sous unix 2-Bas niveau : utilisation directe du transport : sockets (construit sur TCP ou UDP) Exemple : utilisation des sockets en Java

Introduction aux sockets socket : (interface) mécanisme de communication permettant d’utiliser l’interface de transport (TCP(fiable)-UDP(service non fiable)). Elle est créée par l’application et contrôlée par le système. Introduit dans Unix dans les années 80 ; standard aujourd’hui Principe de fonctionnement : 3 phases - illustration ci-dessous avec TCP 1) le serveur crée une "socket serveur" pour accueillir les clients (associée à un port) et se met en attente 2) le client se connecte à la socket serveur ; deux sockets sont alors crées : une "socket client", côté client, et une "socket service client" côté serveur. Ces sockets sont connectées entre elles 3) Le client et le serveur communiquent par les sockets. L’interface (analogie) est celle des fichiers (read, write). La socket serveur peut accepter de nouvelles connexions

UDP: les donées transmises sont envoyées dans le désordre et peuvent être perdues.

Client-serveur avec sockets TCP en Java (très simplifié)

Algorithme d’un serveur en mode connecté

Algorithme d’un client en mode connecté

Algorithme d’un serveur en mode non connecté

Algorithme d’un client en mode non connecté

Remarques: • L'API (Application Programming Interface) "sockets" est une bibliothèque de Classes de communication entre machines sur TCP/IP contenu dans le paquetage java.net • Le mode connecté correspond au protocole TCP. Le protocole établit une connexion virtuelle et se charge alors de maintenir l'intégrité de la communication et de gérer les erreurs de transmission. • Le mode non connecté correspond au protocole UDP. Ce protocole fait l'envoi au mieux ("best effort"). C'est à l'application de maintenir la qualité de la transmission. UDP est une "couche mince" au-dessus de IP.

Les <> classes des sockets en JAVA: Plusieurs classes interviennent lors de la réalisation d'une communication par sockets. La classe java.net.InetAddress permet de manipuler des adresses IP. La classe java.net.SocketServer permet de programmer l'interface côté serveur en mode connecté. La classe java.net.Socket permet de programmer l'interface côté client et la communication effective par flot via les sockets. Les classes java.net.DatagramSocket et java.net.DatagramPacket permettent de programmer la communication en mode datagramme.

Classe Socket: Constructeur : Socket (String host, int port) : creation du socket sur le port et la machine hôte spécifiés. Méthodes : close() : ferme le socket. OutputStream getOutputStream() : revoie un flux de sortie pour cet socket. IutputStream getIutputStream() : revoie un flux de d’entrée pour cet socket.

Classe ServerSocket: Constructeur : ServerSocket (int port) : creation du socket Serveur sur le port spécifié. Méthodes : Idem que Socket Socket accept() : Ecoute si une connexion est demandée pour cet socket et l’accepte

Classe InetAddress Cette classe représente les adresses IP et un ensemble de méthodes pour les manipuler. Conversion de nom vers adresse IP : Les applications doivent utiliser les méthodes : getLocalHost, getByName, ou getAllByName pour construire une nouvelle instance de InetAddress. Conversion de adresse IP vers nom : Méthodes : String getHostName() : Renvoie le nom de la machine hôte de cette adresse.

Example I: Le programme du serveur import java.io.*; import java.net.*; public class Serveur { static final int port = 8080; public static void main(String[] args) throws Exception { ServerSocket s = new ServerSocket(port); Socket soc = s.accept(); // Un BufferedReader permet de lire par ligne. BufferedReader plec = new BufferedReader( new InputStreamReader(soc.getInputStream()) ); // Un PrintWriter possède toutes les opérations print classiques. // En mode auto-flush, le tampon est vidé (flush) à l'appel de println. PrintWriter pred = new PrintWriter( new BufferedWriter( new OutputStreamWriter(soc.getOutputStream())), true); while (true) { String str = plec.readLine(); // lecture du message if (str.equals("END")) break; System.out.println("ECHO = " + str); // trace locale pred.println(str); // renvoi d'un écho } plec.close(); pred.close(); soc.close(); } }

Example I: Le programme du client import java.io.*; import java.net.*; /** Le processus client se connecte au site fourni dans la commande * d'appel en premier argument et utilise le port distant 8080. */ public class Client { static final int port = 8080; public static void main(String[] args) throws Exception { Socket socket = new Socket(args[0], port); System.out.println("SOCKET = " + socket); BufferedReader plec = new BufferedReader( new InputStreamReader(socket.getInputStream()) ); PrintWriter pred = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())), true); String str = "bonjour"; for (int i = 0; i < 10; i++) { pred.println(str); // envoi d'un message str = plec.readLine(); // lecture de l'écho } System.out.println("END"); // message de terminaison pred.println("END") ; plec.close(); pred.close(); socket.close(); } }

Example II: code client import java.io.*; import java.net.*; public class Client { static final int port=8081; public static void main(String []argv)throws Exception{ String str="salut serveur",rec1; Socket s1=new Socket("127.0.0.1",port); //ip exple:127.0.0.1 en localhost cad sur ta machine c'est l'adresse du serveur BufferedReader in1=new BufferedReader(new InputStreamReader(s1.getInputStream())); //flux d'entré PrintWriter out1=new PrintWriter(new BufferedWriter(new OutputStreamWriter(s1.getOutputStream())),true); //flux de sortie et on vide le tampon avc true out1.println(str); //envoi tn mess au serveur cad "salut serveur" defini en haut rec1=in1.readLine(); //rec1 sert a intercepté les flux de sortie du serveur System.out.println(rec1); //ca t'affiche le message du serveur 1.close(); //on ferme la socket } }

Example II:code serveur va lire le message du client et lui envoie salut client import java.io.*; import java.net.*; public class Serveur { static final int port=8081; public static void main(String []argv) throws Exception {String str; ServerSocket serv = new ServerSocket(port); System.out.println("serveur en attente de connexion sur lengthport:"+port); Socket serr=serv.accept(); System.out.println("connexion acceptée pour le client"); BufferedReader in=new BufferedReader(new InputStreamReader(serr.getInputStream())); PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(serr.getOutputStream())),true); System.out.println("flux ouvert,serveur pret a recevoir"); str=in.readLine(); //affiche au client slt client out.println("salut client"); //on ferme la socketserver et la socket crée serr.close(); serv.close(); } }