SlideShare une entreprise Scribd logo
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
java.net
     La classe URL
     accès à une URL pour le Web                   /** la Classe java.net.URL :
       ://Hote[:port]/cheminDacces                 * encaps. Uniform Resource Locator
                                                   */
     getFile(), getHost(), getPort(),              public final class URL
     getProtocol(), getRef() retournent            extends Java.lang.Object
     les champs de l’URL                           implements serealizable
                                                   { ...
     Les données référencée par l’URL                 public final Object getContent()
     peuvent être téléchargée de 3                      throws IOException;
                                                      public URLConnection
     façons :                                           openConnection();
         par un objet URLConnection créé                throws IOException;
         par openConnection()                         public final InputStream
         par un objet InputStream créé par              openStream();
         openStream()                                   throws IOException;
                                                      public String toString();
         par l’appel à getContents() qui           }
         retourne directement le contenu                 try
      pour plus de contrôle utiliser la                    URL lt = new URL (“http://...”);
                                                         catch (MalformedURLException e) {
     classe URLConnection                                //...traitement d’erreur
         getContent-Length-Type-Encoding...              }



© Rémy Courdier        1996-2009 - Java Réseau - Version du cours 3.0                         7
java.net
     Sockets Java

     Sockets:                                               Utilité des “Datagram sockets”
         communication peer-ro-peer                              multicast :
         possède un nom et une adresse réseau                    envoi de paquets à un groupe (ex.
     Les types de sockets :                                      NetBios)
         Datagram sockets                                             Il existe une classe (java 1.1)
                                                                      MulticastSocket dérivée de
                  interface pour l’accès UDP (User
                                                                      DatagramSocket
                  Datagram Protocol)
                  transmissions de paquets                       broadcast :
                  indépendants “sans “ garantie                  envoi de paquets à l’ensemble
         Stream sockets                                          des entités d’un réseau
                  interface pour l’accès TCP                     situation de découverte :
                  (Transmission Control Protocol)
                                                                 découvrir des entités du réseaux,
                  guarantie de transmission...
                                                                 nouveau service disponible
         Raw sockets
                  interface au protocol IP (Internet
                                                                 messagerie non critique :
                  Protocol) ou ICMP (Internet Control            envoi de messages de contrôle
                  Message Protocol)                              d’activité non critiques “Je suis en
                  tests de nouveaux protocoles ou fcts           vie”
                  évoluées



© Rémy Courdier             1996-2009 - Java Réseau - Version du cours 3.0                              8
java.net
     TCP/IP et les principaux services




 Application       NIS
                    NIS   NFS
                           NFS




                                                                             TELNET

                                                                                       Etc...
                                                                            TELNET

                                                                                      Etc...
                                                             HTTP

                                                                     SMTP
                                              X11

                                                      FTP

                                                            HTTP

                                                                    SMTP
                                             X11

                                                     FTP
 Présentation         XDR
                       XDR

 Session
                                                                                                Sockets
                      RPC
                       RPC

 Transport                   UDP
                              UDP                                   TCP
                                                                     TCP

 Réseau                                       IP
                                               IP


 Liaison          Ethernet
                   Ethernet         FDDI
                                     FDDI           Token Ring
                                                     Token Ring             Etc...
                                                                             Etc...




© Rémy Courdier      1996-2009 - Java Réseau - Version du cours 3.0                                   9
java.net
     La classe InetAdress

     faire plus que télécharger un objet            /** la Classe InetAdress:
                                                    * encapsulation d’une adresse IP
     référencé par une URL.                         */
         écrire un serveur par exemple...           public final class InetAdress
     accès à une adresse sur TCP/IP                 extends Java.lang.Object
                                                    { // Methodes de classes
         Net_id.Host_id.Port_ID                          public static InetAdress
                  206.24.45.100                           getByName(String host)
                  “java.sun.com”                          throws UnknownHostException;
                                                         // ttes les @IP associées à un Host
     Cette classe permet de se                           public static InetAdress []
     connecter à un port d’un Host                        getAllByName(String host)
                                                          throws UnknownHostException;
     Internet et d’écrire/lire des                       public static InetAdress
     données des classes java.io.                         getLocalHost(String host)
                                                          throws UnknownHostException;
     Pas de constructeur                                 // Méthodes d’instances
         utilisation de getLocalHost(),                  public boolean equals (Object obj);
         getByName() ou getAllByName()                   public byte[] getAdress();
                                                         public getHostName();
     tests sans le réseau...                             public hashCode();
       //retourn le “localhost”                          public String toString();
       addr = InetAddress.getByName(null);          }



© 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
java.net
     Processus de Sockets - 1

        creation et initialisation d’une                   Socket()
                                                            Socket()   Serveur
        “Socket” : appel de socket(...)


                  Socket()
                   Socket()




                  Client




© Rémy Courdier       1996-2009 - Java Réseau - Version du cours 3.0             12
java.net
     Processus de Sockets - 2

        Établissement d’un service sur un                  Socket()
                                                            Socket()   Serveur
        port de la machine serveur pour
        être visible du réseau : bind(...)                  bind()
                                                             bind()


                  Socket()
                   Socket()




                  Client




© Rémy Courdier       1996-2009 - Java Réseau - Version du cours 3.0             13
java.net
     Processus de Sockets - 3

        attente de connexions, le serveur                  Socket()
                                                            Socket()      Serveur
        est prêt : appel de listen(...)
                                                            bind()
                                                             bind()


                  Socket()
                   Socket()                                listen()
                                                            listen()




                                             un serveur “Datagram sockets”
                                              un serveur “Datagram sockets”
                  Client                     n’utilise pas de listen() ::ililn’y a
                                              n’utilise pas de listen()       n’y a
                                             pas de déroulement de sessions
                                              pas de déroulement de sessions




© Rémy Courdier       1996-2009 - Java Réseau - Version du cours 3.0                  14
java.net
     Processus de Sockets - 4

        Un Client initialise une connexion à               Socket()
                                                            Socket()     Serveur
        un service : appel de connect()
                                                            bind()
                                                             bind()


                  Socket()
                   Socket()                                listen()
                                                            listen()

                                             session
                  connect()
                   connect()                               accept() création
                                                            accept()
                                               TCP                   thread

                  Client                                   accept()
                                                            accept()
                                                        attente client
                                                            suivant


 un serveur “Datagram
  un serveur “Datagram                    Le serveur accepte la connexion
 sockets” n’utilise pas
  sockets” n’utilise pas                   accept() et déclenche un nouveau
 de accept()
  de accept()                              processus pour prendre en compte le
                                           client
© Rémy Courdier       1996-2009 - Java Réseau - Version du cours 3.0               15
java.net
     Processus de Sockets - 5

     le client et le serveur échangent leurs               Socket()
                                                            Socket()       Serveur
     données : en général par des read() et
     write() dans un objet Stream                         “Datagram sockets” utilise
                                                            bind()
                                                           “Datagram sockets” utilise
                                                             bind()
                                                          send() et receive() plutôt que
                                                           send() et receive() plutôt que
                  Socket()
                   Socket()                               read() et write()
                                                           listen() write()
                                                           read() et
                                                            listen()

                                             session
                  connect()
                   connect()                               accept() création
                                                            accept()
                                               TCP                   thread

                  Client                                   accept()
                                                            accept()
                                                        attente client
                                                            suivant
                   write()
                    write()                                                 read()
                                                                             read()
                                         nbXLab
                   read()
                    read()                                                 write()
                                                                            write()
                                           50

                   close()
                    close()                                                close()
                                                                            close()

© Rémy Courdier       1996-2009 - Java Réseau - Version du cours 3.0                        16
java.net
     Processus de Sockets - 6
        fermeture du Socket : les sockets sont
        des ressources limitées et doivent être             Socket()
                                                             Socket()     Serveur
        fermées par les deux parties cliente et
        serveur                                              bind()
                                                              bind()


                   Socket()
                    Socket()                                listen()
                                                             listen()

                                              session
                  connect()
                   connect()                                accept() création
                                                             accept()
                                                TCP                   thread

                  Client                                    accept()
                                                             accept()
                                                         attente client
                                                             suivant
                   write()
                    write()                                               read()
                                                                           read()
                                          nbXLab
                    read()
                     read()                                               write()
                                                                           write()
                                            50

                   close()
                    close()                                               close()
                                                                           close()

© Rémy Courdier        1996-2009 - Java Réseau - Version du cours 3.0                17
java.net
     Exemple de serveur

/** un serveur tres simple qui renvoie ce                     PrintWriter out =
* qu’il reçoit : serveur miroir                                 new PrintWriter(
*/                                                                 new OutputStreamWriter(
import java.io.*;                                                     socket.getOutputStream()));
import java.net.*;                                            while (true) {
public class ServerMiroir {                                     String str = in.readLine();
// Choisir un no de port non entre 1-1024                       if (str.equals("END")) break;
  static final int port = 8080;                                 System.out.println
  public static void main(String[] args ) {                        ("Echoing: " + str);
  try {                                                         out.println(str);
    ServerSocket s = new ServerSocket(port);                    out.flush(); // Ne pas oublier!
    System.out.println("Serv Started: " + s);                 }
    // Blocks until a connection occurs:                      System.out.println("closing...");
    Socket socket = s.accept();                               socket.close();
    System.out.println(                                     } catch(Exception e) {
      "Connect. accepted, socket: "+ socket);                   e.printStackTrace();
    BufferedReader in =                                     }
      new BufferedReader(                               }
        new InputStreamReader(                      }
                   socket.getInputStream()));


© Rémy Courdier         1996-2009 - Java Réseau - Version du cours 3.0                         18
java.net
      Exemple de process serveur

 /** un serveur tres simple qui renvoie ce            PrintWriter out =
 * qu’il reçoit : serveur miroir                        new PrintWriter(
 */                                                        new OutputStreamWriter(
 import java.io.*;                                            socket.getOutputStream()));
                                                                    sinon le buffer
                                                                     sinon le buffer
 import java.net.*;                                   while (true) {n’est pas écrit
 public class ServerMiroir {          Pas d’@ IP :                   n’est pas écrit
                                                        String str = in.readLine();
                                       Pas d’@ IP :                   sur le réseau
                                                                       sur le réseau
 // Choisir un no de port entre 1-1024exécuté sur
                                      exécuté sur       if (str.equals("END")) break;
                                                                   tant qu’il n’est
   static final int port = 8080;       la machine                   tant qu’il n’est
                                                        System.out.println plein
                                        la machine                      pas plein
                                                                         pas
   public static void main(String[] argscourante
                                          ) {              ("Echoing: " + str);
                                         courante
   try {                                                out.println(str);
 Représente
  Représente s = new ServerSocket(port);
     ServerSocket                                       out.flush(); // Ne pas oublier!
la connection
 la System.out.println("Serv Started: " + s);
     connection                                       }
     // Blocks until a connection occurs:             System.out.println("closing...");
     Socket socket = s.accept();                      socket.close();
     System.out.println(                            } catch(Exception e) {
       "socket: "+ socket);                             e.printStackTrace();
     BufferedReader in =                            }
       new BufferedReader(
                                                  appel automatique à toString()
                                                  }appel automatique à toString()
         new InputStreamReader(                 }     socket: [addr=207.0.0.1,
                                                       socket: [addr=207.0.0.1,
                    socket.getInputStream()));       port=1077, localport=8080]
                                                      port=1077, localport=8080]

 © Rémy Courdier         1996-2009 - Java Réseau - Version du cours 3.0                19
java.net
     Exemple de process Client

/** Un client tres simple qui envoie n                    DataInputStream in =
* lignes au serveur et lit n ligne                          new DataInputStream(
*/                                                            new BufferedInputStream(
import java.io.*;                                                socket.getInputStream()));
import java.net.*;                                        PrintStream out =
public class ClientMiroir {                                 new PrintStream(
  static final int port = 8080;                               new BufferedOutputStream(
  public static void main(String args[]) {                       socket.getOutputStream()));
  try {                                                   for(int i = 0; i < 10; i ++) {
  // Passing null to getByName() produces the               out.println("howdy " + i);
  // special "Local Loopback" IP address, for               out.flush(); // Ne pas oublier
  // testing on one machine w/o a network:                  String str = in.readLine();
  InetAddress addr =                                        System.out.println(str);
    InetAddress.getByName(null);                          }
  // On aurait pu utiliser l’adresse ou                   out.println("END");
  // le nom de façon équivalente                          out.flush(); // Ne pas oublier!
  // InetAddress.getByName("127.0.0.1");                  socket.close();
  // InetAddress.getByName("localhost");                } catch(Exception e) {
  System.out.println("addr = " + addr);                   e.printStackTrace(); }
  Socket socket = new Socket(addr, port);               }
  System.out.println("socket = " + socket);         }


© Rémy Courdier         1996-2009 - Java Réseau - Version du cours 3.0                         20
java.net
     Gestion de plusieurs clients pour le serveur

import java.io.*; import java.net.*;              public class MultiServerMiroir {
class ServerMiroir extends Thread { private         static final int port = 8080;
  Socket socket;
                                                    public static void main(String[] args )
  private BufferedReader in;
                                                    {
  private PrintWriter out;
                                                    try {
  ServerMiroir (Socket s) {
    socket = s;                                       ServerSocket s = new
    try { in = new BufferedReader( new ...);              ServerSocket(port);
          out = new PrintWriter( new...);             System.out.println("Serv. Started");
    } catch(IOException e) {...}                        while(true) {
    start(); // Calls run()                               // Bloque jusqu’a connexion
  }                                                       Socket socket = s.accept();
  public void run() {                                     new ServerMiroir(socket);
    try {                                               }
      while (true) { //lire s = in.readLine}
                                                      } catch(Exception e) {
      System.out.println("closing...");
                                                        e.printStackTrace();
      in.close(); out.close();
                                                      }
      socket.close();
    } catch (IOException e) { ... }                 }
  }                                               }
}



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

Contenu connexe

Tendances

Reseau
ReseauReseau
Reseau
gijo000
 
Rapport application chat
Rapport application chatRapport application chat
Rapport application chat
Tbatou sanae
 
Socket tcp ip client server on langace c
Socket tcp ip client server on langace c Socket tcp ip client server on langace c
Socket tcp ip client server on langace c
mouad Lousimi
 
Les socket ing1_issat
Les socket ing1_issatLes socket ing1_issat
Les socket ing1_issat
sloumaallagui
 
Sockets
SocketsSockets
Sockets
Heithem Abbes
 
Système répartis avec RMI
Système répartis avec RMISystème répartis avec RMI
Système répartis avec RMI
Korteby Farouk
 
Présentation de RMI Java
Présentation de RMI JavaPrésentation de RMI Java
Présentation de RMI JavaZakaria Bouazza
 
Appels de procédures distants (RPC)
Appels de procédures distants (RPC)Appels de procédures distants (RPC)
Appels de procédures distants (RPC)
Heithem Abbes
 
Maintenance du système Linux
Maintenance du système LinuxMaintenance du système Linux
Maintenance du système LinuxEL AMRI El Hassan
 
Développement informatique : Programmation réseau
Développement informatique : Programmation réseauDéveloppement informatique : Programmation réseau
Développement informatique : Programmation réseau
ECAM Brussels Engineering School
 
Cours 2 les architectures reparties
Cours 2 les architectures repartiesCours 2 les architectures reparties
Cours 2 les architectures reparties
Mariem ZAOUALI
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlinangeeLee
 
Java RMI
Java RMIJava RMI
Java RMI
Heithem Abbes
 
Liaison modbus wago_atv_31
Liaison modbus wago_atv_31Liaison modbus wago_atv_31
Liaison modbus wago_atv_31Moha Belkaid
 
Bah mamadou hady
Bah mamadou hadyBah mamadou hady
Bah mamadou hady
MamadouHadyBah
 

Tendances (19)

Reseau
ReseauReseau
Reseau
 
Rapport application chat
Rapport application chatRapport application chat
Rapport application chat
 
Introduction aux-sockets
Introduction aux-socketsIntroduction aux-sockets
Introduction aux-sockets
 
Socket tcp ip client server on langace c
Socket tcp ip client server on langace c Socket tcp ip client server on langace c
Socket tcp ip client server on langace c
 
Les socket ing1_issat
Les socket ing1_issatLes socket ing1_issat
Les socket ing1_issat
 
Sockets
SocketsSockets
Sockets
 
Système répartis avec RMI
Système répartis avec RMISystème répartis avec RMI
Système répartis avec RMI
 
Présentation de RMI Java
Présentation de RMI JavaPrésentation de RMI Java
Présentation de RMI Java
 
Appels de procédures distants (RPC)
Appels de procédures distants (RPC)Appels de procédures distants (RPC)
Appels de procédures distants (RPC)
 
Maintenance du système Linux
Maintenance du système LinuxMaintenance du système Linux
Maintenance du système Linux
 
Remote method invocation
Remote method invocationRemote method invocation
Remote method invocation
 
Développement informatique : Programmation réseau
Développement informatique : Programmation réseauDéveloppement informatique : Programmation réseau
Développement informatique : Programmation réseau
 
Cours 2 les architectures reparties
Cours 2 les architectures repartiesCours 2 les architectures reparties
Cours 2 les architectures reparties
 
Cours services web_fabrice_mourlin
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlin
 
Java RMI
Java RMIJava RMI
Java RMI
 
Liaison modbus wago_atv_31
Liaison modbus wago_atv_31Liaison modbus wago_atv_31
Liaison modbus wago_atv_31
 
Tour Horizont.Net
Tour Horizont.NetTour Horizont.Net
Tour Horizont.Net
 
Rpc 4bypage
Rpc 4bypageRpc 4bypage
Rpc 4bypage
 
Bah mamadou hady
Bah mamadou hadyBah mamadou hady
Bah mamadou hady
 

En vedette

Correction hrimech
Correction hrimechCorrection hrimech
Correction hrimech
Oussama Lahssini
 
Universal Sleeve's new product catalog (Bu Sleeves)
Universal Sleeve's new product catalog (Bu Sleeves)Universal Sleeve's new product catalog (Bu Sleeves)
Universal Sleeve's new product catalog (Bu Sleeves)Jose Giraldez
 
Découpler votre code pour assurer la réutilisabilité et la maintenabilite ...
Découpler votre code pour assurer la réutilisabilité et la maintenabilite ...Découpler votre code pour assurer la réutilisabilité et la maintenabilite ...
Découpler votre code pour assurer la réutilisabilité et la maintenabilite ...Fabien Potencier
 
Marchés publics vs qualité
Marchés publics vs qualitéMarchés publics vs qualité
Marchés publics vs qualité
FEANTSA
 
FROST & SULLIVAN 'New Product Innovation Leadership Award' - Rapport en Français
FROST & SULLIVAN 'New Product Innovation Leadership Award' - Rapport en FrançaisFROST & SULLIVAN 'New Product Innovation Leadership Award' - Rapport en Français
FROST & SULLIVAN 'New Product Innovation Leadership Award' - Rapport en Français
Advansolar
 
Lamper
LamperLamper
Lamper
HongoCore
 
Catalogue tarifaire des offres Segments Particuliers & Professionnels Edition...
Catalogue tarifaire des offres Segments Particuliers & Professionnels Edition...Catalogue tarifaire des offres Segments Particuliers & Professionnels Edition...
Catalogue tarifaire des offres Segments Particuliers & Professionnels Edition...
Maroc Telecom
 
Formateo
FormateoFormateo
Formateo
Danae Chmps
 
OpinionWay pour Choisir.com : Les français et les sites comparateurs / Novemb...
OpinionWay pour Choisir.com : Les français et les sites comparateurs / Novemb...OpinionWay pour Choisir.com : Les français et les sites comparateurs / Novemb...
OpinionWay pour Choisir.com : Les français et les sites comparateurs / Novemb...
contactOpinionWay
 
Bereich Qualität
Bereich QualitätBereich Qualität
Bereich QualitätBITE GmbH
 
X10 Grafische Vormgeving
X10 Grafische VormgevingX10 Grafische Vormgeving
X10 Grafische Vormgeving
X10GrafischeVormgeving
 
Opinionway pour Clai - Metronews - LCI / Questions d’actualité / Octobre 2014
Opinionway pour Clai - Metronews - LCI / Questions d’actualité / Octobre 2014Opinionway pour Clai - Metronews - LCI / Questions d’actualité / Octobre 2014
Opinionway pour Clai - Metronews - LCI / Questions d’actualité / Octobre 2014
contactOpinionWay
 
Semana%20del%20psicologo%202010[2]
Semana%20del%20psicologo%202010[2]Semana%20del%20psicologo%202010[2]
Semana%20del%20psicologo%202010[2]
gizquierdoj
 
Tarea 4
Tarea 4Tarea 4
Tarea 4
Elmequia
 
Une collection de résidences en constante évolution
Une collection de résidences en constante évolutionUne collection de résidences en constante évolution
Une collection de résidences en constante évolution
EurotelGroup France
 
Cargador de pilas
Cargador de pilasCargador de pilas
Cargador de pilas
raul12389
 
Kit Smartphones Entreprises chez Maroc Telecom - Février 2014
Kit Smartphones Entreprises chez Maroc Telecom - Février 2014 Kit Smartphones Entreprises chez Maroc Telecom - Février 2014
Kit Smartphones Entreprises chez Maroc Telecom - Février 2014
Maroc Telecom
 
Estrategias de Aprendizaje
Estrategias de AprendizajeEstrategias de Aprendizaje
Estrategias de Aprendizaje
Edgar Linares
 
Dicertacion cip
Dicertacion cipDicertacion cip
Dicertacion cip
Cok391
 

En vedette (20)

Correction hrimech
Correction hrimechCorrection hrimech
Correction hrimech
 
Universal Sleeve's new product catalog (Bu Sleeves)
Universal Sleeve's new product catalog (Bu Sleeves)Universal Sleeve's new product catalog (Bu Sleeves)
Universal Sleeve's new product catalog (Bu Sleeves)
 
Découpler votre code pour assurer la réutilisabilité et la maintenabilite ...
Découpler votre code pour assurer la réutilisabilité et la maintenabilite ...Découpler votre code pour assurer la réutilisabilité et la maintenabilite ...
Découpler votre code pour assurer la réutilisabilité et la maintenabilite ...
 
Marchés publics vs qualité
Marchés publics vs qualitéMarchés publics vs qualité
Marchés publics vs qualité
 
Wine Brand Scan
Wine Brand ScanWine Brand Scan
Wine Brand Scan
 
FROST & SULLIVAN 'New Product Innovation Leadership Award' - Rapport en Français
FROST & SULLIVAN 'New Product Innovation Leadership Award' - Rapport en FrançaisFROST & SULLIVAN 'New Product Innovation Leadership Award' - Rapport en Français
FROST & SULLIVAN 'New Product Innovation Leadership Award' - Rapport en Français
 
Lamper
LamperLamper
Lamper
 
Catalogue tarifaire des offres Segments Particuliers & Professionnels Edition...
Catalogue tarifaire des offres Segments Particuliers & Professionnels Edition...Catalogue tarifaire des offres Segments Particuliers & Professionnels Edition...
Catalogue tarifaire des offres Segments Particuliers & Professionnels Edition...
 
Formateo
FormateoFormateo
Formateo
 
OpinionWay pour Choisir.com : Les français et les sites comparateurs / Novemb...
OpinionWay pour Choisir.com : Les français et les sites comparateurs / Novemb...OpinionWay pour Choisir.com : Les français et les sites comparateurs / Novemb...
OpinionWay pour Choisir.com : Les français et les sites comparateurs / Novemb...
 
Bereich Qualität
Bereich QualitätBereich Qualität
Bereich Qualität
 
X10 Grafische Vormgeving
X10 Grafische VormgevingX10 Grafische Vormgeving
X10 Grafische Vormgeving
 
Opinionway pour Clai - Metronews - LCI / Questions d’actualité / Octobre 2014
Opinionway pour Clai - Metronews - LCI / Questions d’actualité / Octobre 2014Opinionway pour Clai - Metronews - LCI / Questions d’actualité / Octobre 2014
Opinionway pour Clai - Metronews - LCI / Questions d’actualité / Octobre 2014
 
Semana%20del%20psicologo%202010[2]
Semana%20del%20psicologo%202010[2]Semana%20del%20psicologo%202010[2]
Semana%20del%20psicologo%202010[2]
 
Tarea 4
Tarea 4Tarea 4
Tarea 4
 
Une collection de résidences en constante évolution
Une collection de résidences en constante évolutionUne collection de résidences en constante évolution
Une collection de résidences en constante évolution
 
Cargador de pilas
Cargador de pilasCargador de pilas
Cargador de pilas
 
Kit Smartphones Entreprises chez Maroc Telecom - Février 2014
Kit Smartphones Entreprises chez Maroc Telecom - Février 2014 Kit Smartphones Entreprises chez Maroc Telecom - Février 2014
Kit Smartphones Entreprises chez Maroc Telecom - Février 2014
 
Estrategias de Aprendizaje
Estrategias de AprendizajeEstrategias de Aprendizaje
Estrategias de Aprendizaje
 
Dicertacion cip
Dicertacion cipDicertacion cip
Dicertacion cip
 

Similaire à Chap7 java net

Chap7_JavaNet.pdf
Chap7_JavaNet.pdfChap7_JavaNet.pdf
Chap7_JavaNet.pdf
Patiento Del Mar
 
8-socket.pdf
8-socket.pdf8-socket.pdf
8-socket.pdf
StyvePola1
 
6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf
AliouDiallo24
 
module_I6_Sockets.pdf
module_I6_Sockets.pdfmodule_I6_Sockets.pdf
module_I6_Sockets.pdf
Patiento Del Mar
 
Chapitre-4-Programmation-réseau-avec-les-sockets.pdf
Chapitre-4-Programmation-réseau-avec-les-sockets.pdfChapitre-4-Programmation-réseau-avec-les-sockets.pdf
Chapitre-4-Programmation-réseau-avec-les-sockets.pdf
YoussefJamma
 
Les sockets.pptx
Les sockets.pptxLes sockets.pptx
JavaRMI.pdf
JavaRMI.pdfJavaRMI.pdf
JavaRMI.pdf
ngombeemmanuel
 
programmation réseau en java
programmation réseau en java programmation réseau en java
programmation réseau en java
Ezéquiel Tsagué
 
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdfRAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
Souf212
 
Chapitre 3 Comprendre la notion de socket.docx
Chapitre 3 Comprendre la notion de socket.docxChapitre 3 Comprendre la notion de socket.docx
Chapitre 3 Comprendre la notion de socket.docx
Koffi Kanga
 
Chapitre 6 - Protocoles TCP/IP, UDP/IP
Chapitre 6  - Protocoles TCP/IP, UDP/IPChapitre 6  - Protocoles TCP/IP, UDP/IP
Chapitre 6 - Protocoles TCP/IP, UDP/IP
Tarik Zakaria Benmerar
 
416769859360_chap2fondementdesreseaux2023.pdf
416769859360_chap2fondementdesreseaux2023.pdf416769859360_chap2fondementdesreseaux2023.pdf
416769859360_chap2fondementdesreseaux2023.pdf
RihabBENLAMINE
 
173544 introduction-aux-sockets
173544 introduction-aux-sockets173544 introduction-aux-sockets
173544 introduction-aux-socketsnaimanaima1
 
cours_sockets_chap3 patie_I_22_03_2020.pdf
cours_sockets_chap3 patie_I_22_03_2020.pdfcours_sockets_chap3 patie_I_22_03_2020.pdf
cours_sockets_chap3 patie_I_22_03_2020.pdf
Sophie569778
 
Cisco discovery-module-final-v4
Cisco discovery-module-final-v4Cisco discovery-module-final-v4
Cisco discovery-module-final-v4
r2ch
 
Coursrseaux 111019081618-phpapp01
Coursrseaux 111019081618-phpapp01Coursrseaux 111019081618-phpapp01
Coursrseaux 111019081618-phpapp01Fabrice Enock
 
Architecture Décentralisée
Architecture DécentraliséeArchitecture Décentralisée
Architecture Décentraliséeparigot
 
Etude de la WIFI sur NS2
Etude de la WIFI sur NS2Etude de la WIFI sur NS2
Etude de la WIFI sur NS2
Chiheb Ouaghlani
 
Deploiement_Lora_exo.pdf
Deploiement_Lora_exo.pdfDeploiement_Lora_exo.pdf
Deploiement_Lora_exo.pdf
merazgaammar2
 

Similaire à Chap7 java net (20)

Chap7_JavaNet.pdf
Chap7_JavaNet.pdfChap7_JavaNet.pdf
Chap7_JavaNet.pdf
 
8-socket.pdf
8-socket.pdf8-socket.pdf
8-socket.pdf
 
6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf
 
module_I6_Sockets.pdf
module_I6_Sockets.pdfmodule_I6_Sockets.pdf
module_I6_Sockets.pdf
 
Chapitre-4-Programmation-réseau-avec-les-sockets.pdf
Chapitre-4-Programmation-réseau-avec-les-sockets.pdfChapitre-4-Programmation-réseau-avec-les-sockets.pdf
Chapitre-4-Programmation-réseau-avec-les-sockets.pdf
 
Les sockets.pptx
Les sockets.pptxLes sockets.pptx
Les sockets.pptx
 
JavaRMI.pdf
JavaRMI.pdfJavaRMI.pdf
JavaRMI.pdf
 
programmation réseau en java
programmation réseau en java programmation réseau en java
programmation réseau en java
 
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdfRAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
 
Chapitre 3 Comprendre la notion de socket.docx
Chapitre 3 Comprendre la notion de socket.docxChapitre 3 Comprendre la notion de socket.docx
Chapitre 3 Comprendre la notion de socket.docx
 
Chapitre 6 - Protocoles TCP/IP, UDP/IP
Chapitre 6  - Protocoles TCP/IP, UDP/IPChapitre 6  - Protocoles TCP/IP, UDP/IP
Chapitre 6 - Protocoles TCP/IP, UDP/IP
 
416769859360_chap2fondementdesreseaux2023.pdf
416769859360_chap2fondementdesreseaux2023.pdf416769859360_chap2fondementdesreseaux2023.pdf
416769859360_chap2fondementdesreseaux2023.pdf
 
173544 introduction-aux-sockets
173544 introduction-aux-sockets173544 introduction-aux-sockets
173544 introduction-aux-sockets
 
cours_sockets_chap3 patie_I_22_03_2020.pdf
cours_sockets_chap3 patie_I_22_03_2020.pdfcours_sockets_chap3 patie_I_22_03_2020.pdf
cours_sockets_chap3 patie_I_22_03_2020.pdf
 
Cisco discovery-module-final-v4
Cisco discovery-module-final-v4Cisco discovery-module-final-v4
Cisco discovery-module-final-v4
 
Coursrseaux 111019081618-phpapp01
Coursrseaux 111019081618-phpapp01Coursrseaux 111019081618-phpapp01
Coursrseaux 111019081618-phpapp01
 
Cours réseaux
Cours réseauxCours réseaux
Cours réseaux
 
Architecture Décentralisée
Architecture DécentraliséeArchitecture Décentralisée
Architecture Décentralisée
 
Etude de la WIFI sur NS2
Etude de la WIFI sur NS2Etude de la WIFI sur NS2
Etude de la WIFI sur NS2
 
Deploiement_Lora_exo.pdf
Deploiement_Lora_exo.pdfDeploiement_Lora_exo.pdf
Deploiement_Lora_exo.pdf
 

Dernier

Iris van Herpen. pptx
Iris         van        Herpen.      pptxIris         van        Herpen.      pptx
Iris van Herpen. pptx
Txaruka
 
Textes de famille concernant les guerres V2.pdf
Textes de famille concernant les guerres V2.pdfTextes de famille concernant les guerres V2.pdf
Textes de famille concernant les guerres V2.pdf
Michel Bruley
 
Proyecto Erasmus Jardineros y jardineras de paz
Proyecto Erasmus Jardineros y jardineras de pazProyecto Erasmus Jardineros y jardineras de paz
Proyecto Erasmus Jardineros y jardineras de paz
Morzadec Cécile
 
cours-LasergrammetrieLe « LiDAR», de l’anglais « Light.pptx
cours-LasergrammetrieLe « LiDAR», de l’anglais « Light.pptxcours-LasergrammetrieLe « LiDAR», de l’anglais « Light.pptx
cours-LasergrammetrieLe « LiDAR», de l’anglais « Light.pptx
AbdessamadAmimi1
 
BATIMENT 5.pptx. Fil français tourné en France
BATIMENT 5.pptx. Fil français tourné en FranceBATIMENT 5.pptx. Fil français tourné en France
BATIMENT 5.pptx. Fil français tourné en France
Txaruka
 
Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union
 
Veille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdfVeille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdf
frizzole
 

Dernier (7)

Iris van Herpen. pptx
Iris         van        Herpen.      pptxIris         van        Herpen.      pptx
Iris van Herpen. pptx
 
Textes de famille concernant les guerres V2.pdf
Textes de famille concernant les guerres V2.pdfTextes de famille concernant les guerres V2.pdf
Textes de famille concernant les guerres V2.pdf
 
Proyecto Erasmus Jardineros y jardineras de paz
Proyecto Erasmus Jardineros y jardineras de pazProyecto Erasmus Jardineros y jardineras de paz
Proyecto Erasmus Jardineros y jardineras de paz
 
cours-LasergrammetrieLe « LiDAR», de l’anglais « Light.pptx
cours-LasergrammetrieLe « LiDAR», de l’anglais « Light.pptxcours-LasergrammetrieLe « LiDAR», de l’anglais « Light.pptx
cours-LasergrammetrieLe « LiDAR», de l’anglais « Light.pptx
 
BATIMENT 5.pptx. Fil français tourné en France
BATIMENT 5.pptx. Fil français tourné en FranceBATIMENT 5.pptx. Fil français tourné en France
BATIMENT 5.pptx. Fil français tourné en France
 
Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023Bibliothèque de L'Union - Bilan de l'année 2023
Bibliothèque de L'Union - Bilan de l'année 2023
 
Veille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdfVeille Audocdi 90 - mois de juin 2024.pdf
Veille Audocdi 90 - mois de juin 2024.pdf
 

Chap7 java net

  • 1. 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
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. java.net La classe URL accès à une URL pour le Web /** la Classe java.net.URL : ://Hote[:port]/cheminDacces * encaps. Uniform Resource Locator */ getFile(), getHost(), getPort(), public final class URL getProtocol(), getRef() retournent extends Java.lang.Object les champs de l’URL implements serealizable { ... Les données référencée par l’URL public final Object getContent() peuvent être téléchargée de 3 throws IOException; public URLConnection façons : openConnection(); par un objet URLConnection créé throws IOException; par openConnection() public final InputStream par un objet InputStream créé par openStream(); openStream() throws IOException; public String toString(); par l’appel à getContents() qui } retourne directement le contenu try pour plus de contrôle utiliser la URL lt = new URL (“http://...”); catch (MalformedURLException e) { classe URLConnection //...traitement d’erreur getContent-Length-Type-Encoding... } © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 7
  • 8. java.net Sockets Java Sockets: Utilité des “Datagram sockets” communication peer-ro-peer multicast : possède un nom et une adresse réseau envoi de paquets à un groupe (ex. Les types de sockets : NetBios) Datagram sockets Il existe une classe (java 1.1) MulticastSocket dérivée de interface pour l’accès UDP (User DatagramSocket Datagram Protocol) transmissions de paquets broadcast : indépendants “sans “ garantie envoi de paquets à l’ensemble Stream sockets des entités d’un réseau interface pour l’accès TCP situation de découverte : (Transmission Control Protocol) découvrir des entités du réseaux, guarantie de transmission... nouveau service disponible Raw sockets interface au protocol IP (Internet messagerie non critique : Protocol) ou ICMP (Internet Control envoi de messages de contrôle Message Protocol) d’activité non critiques “Je suis en tests de nouveaux protocoles ou fcts vie” évoluées © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 8
  • 9. java.net TCP/IP et les principaux services Application NIS NIS NFS NFS TELNET Etc... TELNET Etc... HTTP SMTP X11 FTP HTTP SMTP X11 FTP Présentation XDR XDR Session Sockets RPC RPC Transport UDP UDP TCP TCP Réseau IP IP Liaison Ethernet Ethernet FDDI FDDI Token Ring Token Ring Etc... Etc... © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 9
  • 10. java.net La classe InetAdress faire plus que télécharger un objet /** la Classe InetAdress: * encapsulation d’une adresse IP référencé par une URL. */ écrire un serveur par exemple... public final class InetAdress accès à une adresse sur TCP/IP extends Java.lang.Object { // Methodes de classes Net_id.Host_id.Port_ID public static InetAdress 206.24.45.100 getByName(String host) “java.sun.com” throws UnknownHostException; // ttes les @IP associées à un Host Cette classe permet de se public static InetAdress [] connecter à un port d’un Host getAllByName(String host) throws UnknownHostException; Internet et d’écrire/lire des public static InetAdress données des classes java.io. getLocalHost(String host) throws UnknownHostException; Pas de constructeur // Méthodes d’instances utilisation de getLocalHost(), public boolean equals (Object obj); getByName() ou getAllByName() public byte[] getAdress(); public getHostName(); tests sans le réseau... public hashCode(); //retourn le “localhost” public String toString(); addr = InetAddress.getByName(null); } © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 10
  • 11. 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
  • 12. java.net Processus de Sockets - 1 creation et initialisation d’une Socket() Socket() Serveur “Socket” : appel de socket(...) Socket() Socket() Client © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 12
  • 13. java.net Processus de Sockets - 2 Établissement d’un service sur un Socket() Socket() Serveur port de la machine serveur pour être visible du réseau : bind(...) bind() bind() Socket() Socket() Client © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 13
  • 14. java.net Processus de Sockets - 3 attente de connexions, le serveur Socket() Socket() Serveur est prêt : appel de listen(...) bind() bind() Socket() Socket() listen() listen() un serveur “Datagram sockets” un serveur “Datagram sockets” Client n’utilise pas de listen() ::ililn’y a n’utilise pas de listen() n’y a pas de déroulement de sessions pas de déroulement de sessions © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 14
  • 15. java.net Processus de Sockets - 4 Un Client initialise une connexion à Socket() Socket() Serveur un service : appel de connect() bind() bind() Socket() Socket() listen() listen() session connect() connect() accept() création accept() TCP thread Client accept() accept() attente client suivant un serveur “Datagram un serveur “Datagram  Le serveur accepte la connexion sockets” n’utilise pas sockets” n’utilise pas accept() et déclenche un nouveau de accept() de accept() processus pour prendre en compte le client © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 15
  • 16. java.net Processus de Sockets - 5 le client et le serveur échangent leurs Socket() Socket() Serveur données : en général par des read() et write() dans un objet Stream “Datagram sockets” utilise bind() “Datagram sockets” utilise bind() send() et receive() plutôt que send() et receive() plutôt que Socket() Socket() read() et write() listen() write() read() et listen() session connect() connect() accept() création accept() TCP thread Client accept() accept() attente client suivant write() write() read() read() nbXLab read() read() write() write() 50 close() close() close() close() © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 16
  • 17. java.net Processus de Sockets - 6 fermeture du Socket : les sockets sont des ressources limitées et doivent être Socket() Socket() Serveur fermées par les deux parties cliente et serveur bind() bind() Socket() Socket() listen() listen() session connect() connect() accept() création accept() TCP thread Client accept() accept() attente client suivant write() write() read() read() nbXLab read() read() write() write() 50 close() close() close() close() © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 17
  • 18. java.net Exemple de serveur /** un serveur tres simple qui renvoie ce PrintWriter out = * qu’il reçoit : serveur miroir new PrintWriter( */ new OutputStreamWriter( import java.io.*; socket.getOutputStream())); import java.net.*; while (true) { public class ServerMiroir { String str = in.readLine(); // Choisir un no de port non entre 1-1024 if (str.equals("END")) break; static final int port = 8080; System.out.println public static void main(String[] args ) { ("Echoing: " + str); try { out.println(str); ServerSocket s = new ServerSocket(port); out.flush(); // Ne pas oublier! System.out.println("Serv Started: " + s); } // Blocks until a connection occurs: System.out.println("closing..."); Socket socket = s.accept(); socket.close(); System.out.println( } catch(Exception e) { "Connect. accepted, socket: "+ socket); e.printStackTrace(); BufferedReader in = } new BufferedReader( } new InputStreamReader( } socket.getInputStream())); © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 18
  • 19. java.net Exemple de process serveur /** un serveur tres simple qui renvoie ce PrintWriter out = * qu’il reçoit : serveur miroir new PrintWriter( */ new OutputStreamWriter( import java.io.*; socket.getOutputStream())); sinon le buffer sinon le buffer import java.net.*; while (true) {n’est pas écrit public class ServerMiroir { Pas d’@ IP : n’est pas écrit String str = in.readLine(); Pas d’@ IP : sur le réseau sur le réseau // Choisir un no de port entre 1-1024exécuté sur exécuté sur if (str.equals("END")) break; tant qu’il n’est static final int port = 8080; la machine tant qu’il n’est System.out.println plein la machine pas plein pas public static void main(String[] argscourante ) { ("Echoing: " + str); courante try { out.println(str); Représente Représente s = new ServerSocket(port); ServerSocket out.flush(); // Ne pas oublier! la connection la System.out.println("Serv Started: " + s); connection } // Blocks until a connection occurs: System.out.println("closing..."); Socket socket = s.accept(); socket.close(); System.out.println( } catch(Exception e) { "socket: "+ socket); e.printStackTrace(); BufferedReader in = } new BufferedReader( appel automatique à toString() }appel automatique à toString() new InputStreamReader( } socket: [addr=207.0.0.1, socket: [addr=207.0.0.1, socket.getInputStream())); port=1077, localport=8080] port=1077, localport=8080] © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 19
  • 20. java.net Exemple de process Client /** Un client tres simple qui envoie n DataInputStream in = * lignes au serveur et lit n ligne new DataInputStream( */ new BufferedInputStream( import java.io.*; socket.getInputStream())); import java.net.*; PrintStream out = public class ClientMiroir { new PrintStream( static final int port = 8080; new BufferedOutputStream( public static void main(String args[]) { socket.getOutputStream())); try { for(int i = 0; i < 10; i ++) { // Passing null to getByName() produces the out.println("howdy " + i); // special "Local Loopback" IP address, for out.flush(); // Ne pas oublier // testing on one machine w/o a network: String str = in.readLine(); InetAddress addr = System.out.println(str); InetAddress.getByName(null); } // On aurait pu utiliser l’adresse ou out.println("END"); // le nom de façon équivalente out.flush(); // Ne pas oublier! // InetAddress.getByName("127.0.0.1"); socket.close(); // InetAddress.getByName("localhost"); } catch(Exception e) { System.out.println("addr = " + addr); e.printStackTrace(); } Socket socket = new Socket(addr, port); } System.out.println("socket = " + socket); } © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 20
  • 21. java.net Gestion de plusieurs clients pour le serveur import java.io.*; import java.net.*; public class MultiServerMiroir { class ServerMiroir extends Thread { private static final int port = 8080; Socket socket; public static void main(String[] args ) private BufferedReader in; { private PrintWriter out; try { ServerMiroir (Socket s) { socket = s; ServerSocket s = new try { in = new BufferedReader( new ...); ServerSocket(port); out = new PrintWriter( new...); System.out.println("Serv. Started"); } catch(IOException e) {...} while(true) { start(); // Calls run() // Bloque jusqu’a connexion } Socket socket = s.accept(); public void run() { new ServerMiroir(socket); try { } while (true) { //lire s = in.readLine} } catch(Exception e) { System.out.println("closing..."); e.printStackTrace(); in.close(); out.close(); } socket.close(); } catch (IOException e) { ... } } } } } © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 21
  • 22. java.net 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