Les Sockets et Java Cours réseaux Essi2 Anne-Marie Déry

  • View
    110

  • Download
    7

Embed Size (px)

Transcript

  • Page 1
  • Les Sockets et Java Cours rseaux Essi2 Anne-Marie Dry
  • Page 2
  • Sockets ? Outil de communication pour changer des donnes entre un client et un serveur Canaux de communication (descripteur dentre sortie dans lesquels on crit et sur lesquels on lit)
  • Page 3
  • Architecture client serveur Mode de communication quun hte tablit avec un autre hte qui fournit un service quelconque application opration Client Serveur Send request Send reply protocole dapplication
  • Page 4
  • Exemples d applications Classiques Serveur de Messages Serveur de newsSockets Serveur de fichiers Applications distribuesRMI Rservation de voyages Serveurs de vente Composants distribus.EJBs
  • Page 5
  • Besoins dune application Client- Serveur Similitudes avec un appel tlphonique via un standard 1. Trouver ladresse du serveur : trouver le no de tlphone de lentreprise 2. Demander un service spcifique : sadresser un service ou une personne prcise de lentreprise (no de poste) 3. Faire la requte 4. Obtenir une rponse Adresse dun serveur ? Identification dun service ?
  • Page 6
  • Un peu de vocabulaire Client : entit qui fait l appel Sockets : moyen de communication entre ordinateurs Adresses IP : adresse dun ordinateur Serveur : entit qui prend en charge la requte Serveur de noms (DNS) : correspondances entre noms logiques et adresses IP (Annuaire) Port : canal ddi un service Protocole :langage utilis par 2 ordinateurs pour communiquer entre eux
  • Page 7
  • Adresse Internet et Port Adresse internet attribue chaque nud du rseau srie d octets dont la valeur dpend du type de rseau associe un nom logique (Domain Name Server) Chaque hte possde environ 65535 ports Port canal ddi un service spcifique 80 pour le service http 25 pour le service SMTP TCP implique une file dattente par connexion UDP implique une file dattente unique pour le port
  • Page 8
  • Exemples d adresses Internet ypcat hosts sur SUN 157.169.9.15 oscar.essi.fr oscar 157.169.20.5 accueil.essi.fr accueil 157.169.20.4 compta.essi.fr compta 157.169.25.201 www-local.essi.fr www-local 157.169.10.222 pcprofs.essi.fr pcprofs 157.169.4.50 ada.essi.fr ada 157.169.10.120 macserver.essi.fr macserver 157.169.10.240 demo.essi.fr demo 157.169.1.20 bibli.essi.fr bibli 157.169.25.110 sfe-srv.essi.fr sfe-srv sfe 157.169.1.153 bde.essi.fr bde 157.169.3.204 niv1a.essi.fr niv1a 157.169.1.155 dessi.essi.fr dessi 157.169.10.2 jessica.essi.fr jessica print2
  • Page 9
  • Exemples d adresses 157.169.25.200 news-srv.essi.fr news-srv www.essi.fr www-srv.essi.fr news 134.59.132.21 dolphin.unice.fr 157.169.10.1 essi2.essi.fr loghost essi2 Essi : 157.169 I3S: 134.59 serveurs : 25 Administration : 1 .
  • Page 10
  • Ports rservs TCP Serveur FTP : 21 Serveur Telnet : 23 Serveur SMTP : 25 UDP Agent SNMP : 161 Logger SNMP : 162 Serveur rwhod : 513 Serveur multi processusApplications transactionnelles 1 1024 services fondamentaux (administrateurs) (sous unix cf. le fichier /etc/services) 1025 5000 disponibles pour les utilisateurs
  • Page 11
  • Plus prcisment un socket Plusieurs types de sockets : pour la communication inter processus classique pour communication rseau en mode datagramme pour communication rseau en mode connect une machine joue le rle du serveur et une autre (ou plusieurs) pour le client
  • Page 12
  • Scnario dun serveur Cration d un paquet d entre Attente de donnes en entre Rception des donnes en entre et calcul Cration dun paquet de sortie Envoi de la rponse Fermer le socket d entre Crer le socket d entre
  • Page 13
  • Scnario dun client Crer un paquet de sortie Envoyer une requte Crer un paquet d entre Attendre des donnes en entre Recevoir les donnes et les traiter Fermer le socket d entre Crer le socket d entre
  • Page 14
  • Sockets (Communication Client serveur) Serveur connecte le client sur un nouveau no de port et reste en attente sur le port original Client et serveur communiquent en crivant et lisant sur un socket Serveur est lcoute des requtes sur un port particulier Un client doit connatre lhte et le port sur lequel le serveur coute. Le client peut tenter une connexion au serveur
  • Page 15
  • Serveurs actifs Activation manuelle peu recommande Utilisation de Inetd sous UNIX Serveur particulier (dmon) attend pour les autres serveurs fichier de configuration : /etc/inetd.conf fichier /etc/services
  • Page 16
  • Contexte : modle OSI Couches Transports : Transmission Control Protocol User Datagram Protocol Couche communication : Internet Protocol Mode connect vs mode non connect rester en ligne pour demander plusieurs services ou rappeler lentreprise pour chaque nouvelle requte
  • Page 17
  • Sockets en Java ? BSD sockets UNIX au dessus de TCP ou UDP En Java toutes les classes relatives aux sockets sont dans le package java.net Une infrastructure puissante et flexible pour la programmation rseau
  • Page 18
  • Le Package net 4 Des Exceptions 4 Des entres Sorties 4 Des Sockets 4 ... Plusieurs hirarchies de classes
  • Page 19
  • Des types de Sockets ServerSocket HttpAwareServerSocket DatagramSocket MulticastSocket Socket HttpSendSocket WrappedSocket Object
  • Page 20
  • Des exceptions Exception IOException SocketExceptionProtocolException UnknownHostExceptionUnknownServiceException BindException ConnectException
  • Page 21
  • Des Entres Sorties Object InputStream FileInputStream SocketInputStream OutputStream FileOutputStream SocketOutputStream
  • Page 22
  • Autres Classes Object InetAdress DatagramPacketSocketImpl PlainSocketImpl
  • Page 23
  • Programmation en Java 4 Les oprations de base 4 Un exemple : le service SMTP 4 Un serveur dEcho 4 Aperus des autres types de communication Plusieurs Clients grs simultanment ( ligne non occupe) Client Serveur dataGram Communication Broadcast (runion tlphonique)
  • Page 24
  • Java.net.InetAddress : nommage La classe InetAddress 2 constructeurs : un par dfaut qui cre une adresse vide (cf la mthode accept sur Socket) un qui prend le nom de la machine hte et ladresse IP de la machine. Des accesseurs en lecture : pour rcuprer ladresse IP dune machine (getByName, getAllByName), des informations sur la machine hte (getLocalHost, getLocalAddress, getLocaName) Des comparateurs : galit (equals) et type dadresse (isMulticastAddress) ..
  • Page 25
  • TCP et Sockets 2 classes : Socket et ServerSocket (java.net package)
  • Page 26
  • Flot de requtes du client vers le serveur application opration Client Serveur Ouvrir connexion req1 req2 req3 reqn Fermer la connexion
  • Page 27
  • TCP et Sockets La classe Socket : une batterie de constructeurs : par dfaut, no de port + adresse / nom de machine et service distante, + no de port + adresse locale, crent un socket en mode Stream ou DataGramme des accesseurs en lecture : no de port et adresse laquelle il est connect, no de port et adresse laquelle il est li, input et output Stream associs (getPort, getInetAddress, getLocalPort, getLocalAddress, getInputStream, getOutputStream) des mthodes : close...
  • Page 28
  • TCP et Sockets La classe ServerSocket des constructeurs : par dfaut, no de port associ, + taille de la liste de clients en attente + adresse... des accesseurs en lecture : no de port sur lequel le socket coute, adresse laquelle il est connect (getPort, getInetAddress, ) des mthodes : accept pour accepter une communication avec un client, close...
  • Page 29
  • Un socket : une entre sortie ddie au rseau Gestion similaire des entres sorties standard (cran, clavier) et des fichiers En sortie (ex. System.out) : java.io.PrintStream (ou PrintWriter) utilise un flot dirig vers une sortie java.io.OutputStream En entre (ex. System.in) : java.io.InputStream
  • Page 30 1023)">
  • Comment ouvrir un socket ? Dans un client Socket MyClient; try { MyClient = new Socket("Machine name", PortNumber); } catch (IOException e) { System.out.println(e); } Machine name : machine laquelle on veut se connecter PortNumber port sur lequel tourne le serveur (> 1023)
  • Page 31
  • Dans un serveur ? ServerSocket MyService; try { MyServerice = new ServerSocket(PortNumber); } catch (IOException e) {System.out.println(e);} Cration dun objet socket pour couter et accepter les connexions des clients Socket clientSocket = null; try { ServiceSocket = MyService.accept();} catch (IOException e) {System.out.println(e); }
  • Page 32
  • Comment crer un Input Stream ? Ct client : pour recevoir une rponse du serveur try {input = new DataInputStream(MyClient.getInputStream());} catch (IOException e) {System.out.println(e);} DataInputStream : lire des lignes de texte, des entiers, des doubles,des caractres... ( read, readChar, readInt, readDouble, and readLine,. )
  • Page 33
  • Ct Serveur pour recevoir les donnes dun client DataInputStream input;: try { input = new DataInputStream(serviceSocket.getInputStream()); } catch (IOException e) {System.out.println(e);}
  • Page 34
  • Comment crer un Output Stream? Ct client : pour envoyer une information au serveur (PrintStream ou DataOutputStream) PrintStream output; try {output = new PrintStream(MyClient.getOutputStream;} c