UV Réseaux / Java RMI Module Java Expert

Slides:



Advertisements
Présentations similaires
Semaine 5 Couche Liaison de données Cours préparé par Marc Aubé
Advertisements

Les protocoles réseau.
Module 5 : Implémentation de l'impression
Le stockage DAS,NAS,SAN.
CHAPITRE I NOTION DE RESEAUX.
Distance inter-locuteur
1 Plus loin dans lutilisation de Windows Vista ©Yves Roger Cornil - 2 août
1re STG COMMUNICATION ET RESEAU INFORMATIQUE
Introduction aux réseaux informatiques
Présentation de l’Internet
Serveur jeu Le serveur fait partie d'un logiciel de jeu en ligne multi joueur en architecture client serveur. Il répond à des demandes.
- Couche 7 - Couche application. Sommaire 1)Introduction 1)DNS 1)FTP et TFTP 1)HTTP 1)SNMP 1)SMTP 1)Telnet.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Vue d'ensemble Présentation multimédia : Rôle du routage dans l'infrastructure réseau Activation et configuration du service Routage et accès distant Configuration.
Architecture de réseaux
Réseaux Privés Virtuels
LES TRANSMISSIONS DE DONNEES DANS LE SECTEUR INDUSTRIEL. ZOBRIST Julien TS1 ETA.
LES RESEAUX.
FLSI602 Génie Informatique et Réseaux
Les Réseaux (Informatiques)
Environnement matériel d’un réseau informatique
Système de stockage réseaux NAS - SAN
Anouar Abtoy Yasser El Khamlichi 1.
Introduction aux réseaux
Université Michel de Montaigne – Bordeaux 3 Département INFORMATIQUE
SECURITE DU SYSTEME D’INFORMATION (SSI)
Les Réseaux Informatiques
Les medias.
Les équipements d’un réseau local
Solutions Réseaux Locaux
Architecture Réseau Modèle OSI et TCP.
Les réseaux informatiques
Introduction aux réseaux
Virtual Local Area Network
Le protocole FTP.
Les relations clients - serveurs
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
Gestion des bases de données
WINDOWS Les Versions Serveurs
La typologie des réseaux
Chapitre 1 : Rappels Module : Système et réseau
Le Modele OSI.
LES RESEAUX en Première et Terminale SI (Ressources)
Programmes de Seconde option ISI Première et Terminale S option SI
Réseaux Informatiques
Nom et prénom: CHAHTI Chaimae Année scolaire: 2014/2015 Classe: 2/6.
1/65 微距摄影 美丽的微距摄影 Encore une belle leçon de Macrophotographies venant du Soleil Levant Louis.
Exposé sur les réseaux informatiques réalisé par :
Chapitre 1: Réseaux Informatiques
Cours de Réseaux Informatiques
Réalisé par : HOUDA CHAHRAOUI
© OutilsInformatique, 2014 tous droits réservés 1.Définir des termes et concepts de la gestion de réseau. 2.Comprendre les avantages d’un réseau. 3.Comprendre.
III- Une typologie Les réseaux locaux Les réseaux étendus.
Sommaire Dans ce chapitre, nous aborderons :
La formation des maîtres et la manifestation de la compétence professionnelle à intégrer les technologies de l'information et des communications (TIC)
Suite.
Exposée sur les réseau informatiques
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Elève: ibtihal bekraoui
Séance 13 Internet.
Les sockets.
Éléments de réseautique
1. Introduction Le traitement informatisé de données requiert un dialogue, une communication entre l’homme et la machine, et parfois, entre plusieurs.
L’architecture physique
V- Identification des ordinateurs sur le réseau
Le réseau informatique
Architecture Client/Serveur
Les Réseaux Informatiques Rappels
M2.22 Réseaux et Services sur réseaux
Transcription de la présentation:

UV Réseaux / Java RMI Module Java Expert CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV Réseaux / Java RMI

Module Java Vue d’ensemble du langage Java Le langage Java : syntaxe et sémantique Programmation multi-tâche : les threads Accéder aux bases de données Composants réutilisables : le modèle MVC Développement Client/Serveur Présentation de l’IDE VisualAge Les serveurs d’applications J2EE Les Enterprise JavaBeans Ré-ingénierie d’applications Java

Réseau local - Définition Système de communication à l ’intérieur d ’un même site (local area network ou LAN) servant à relier des ordinateurs entre eux sur une distance restreinte dans différents buts : Mise en commun d ’équipements : imprimante laser, disque dur de grande capacité, lecteurs de CD-ROM, périphériques de communication, etc. Partage d ’informations numériques (fichiers de données, de textes, etc.) entre individus ou groupes d ’individus.

Réseau local - Définition Partage de systèmes de maintenance pour sauvegardes, installation de logiciels, etc.

LAN versus MAN versus WAN MAN - metropolitan area network / réseau métropolitain Réseau qui regroupe des réseaux locaux situés dans une même zone urbaine. WAN - wide area network / réseau étendu Système de communication formant un grand réseau déployé géographiquement sur une longue distance, reliant éventuellement entre eux des réseaux locaux, en ayant recours le plus souvent à des réseaux publics pour la transmission à distance (lignes téléphoniques spécialisées ou liaisons satellites)

Les réseaux…un monde complexe... « C ’est juste en attendant que la connexion Internet fonctionne de nouveau » © Richtennant

Composantes d’un réseau local Matériel Serveur (si choisi approche avec serveur dédié)+ unité d ’alimentation de secours (UPS - uninterrupted power supply) Postes de travail Cartes d ’interface réseau (pour le serveur et les postes de travail) Câbles réseau unité de sauvegarde sur bande Logiciel Système d ’exploitation du réseau local

Réseau poste à poste ou réseau avec serveur dédié? Critères à considérer pour le choix du type de réseau à installer: Taille de l’entreprise Niveau de sécurité nécessaire Type d’activité Niveau de compétence d’administration disponible Volume du trafic sur le réseau Besoins des utilisateurs du réseau Budget alloué au fonctionnement du réseau (pas seulement l’achat mais aussi l’entretien et la maintenance)

Réseau poste à poste ou réseau avec serveur dédié? Yves Lise Yves Louis Yves Lucie

Réseau poste à poste ou réseau avec serveur dédié? Réseau poste à poste (peer to peer) Le système d ’exploitation de chaque poste est configuré pour offrir un support réseau ce qui permet au poste d ’agir à la fois comme poste et comme serveur. Chaque poste peut partager ses ressources avec un autre (fichiers, imprimante). Il peut être à la fois client et serveur. Windows pour Workgroups, Windows 95, 98, ME Windows NT Workstation, et Windows 2000 Professionnel intègrent toutes les fonctionnalités du réseau poste à poste

Réseau poste à poste ou réseau avec serveur dédié? Réseau poste à poste (peer to peer) Avantages : Simple à mettre en place Coût réduit (achat d ’une carte par poste et de câbles) Désavantages : Performance réduite du poste utilisé à la fois comme serveur et comme poste Peu de sécurité. Décentralisé donc difficile à administrer, chaque utilisateur gérant son propre poste et en planifiant la sécurité Pour réseaux de 10 postes et moins

Réseau poste à poste ou réseau avec serveur dédié? Réseau client/serveur Le serveur = ordinateur qui centralise les informations ou qui met à la disposition de tous les ressources dont il dispose. On ne travaille pas dans des applications sur un serveur dédié: il a pour fonction de mettre ses ressources en partage. Le client(s) = poste de travail qui peut utiliser ses propres ressources ou les ressources du serveur si elles ont été préalablement déclarées publiques. Les logiciels d ’application doivent être exécutés à partir d’un client.

Réseau poste à poste ou réseau avec serveur dédié? Serveur dédié : ordinateur puissant qui partage ses ressources avec d ’autres ordinateurs du réseau par l ’intermédiaire de son système d ’exploitation réseau. Cœur du réseau client-serveur. Comprend un ou plusieurs processeurs puissants, un disque dur fiable (SCSI) et autant de mémoire que possible. Répond à deux besoins principaux : Gère le flot des données à travers le réseau grâce à son système d ’exploitation réseau Permet d ’assurer la sécurité et l ’intégrité de ces données Deux facteurs limitants : vitesse de la carte réseau et de l ’accès en lecture-écriture sur le disque dur du serveur

Réseau poste à poste ou réseau avec serveur dédié? Serveur dédié dans réseau client/serveur Avantages: gestion des ressources centralisée sécurité accrue par rapport à réseau poste à poste réseau évolutif Désavantages: Coût élevé (serveur + système d ’exploitation réseau) Installation et gestion complexes maillon faible du réseau client-serveur car tout le réseau est structuré autour du serveur dédié. Doit prévoir des solutions de relève en cas de panne du serveur.

Réseau poste à poste ou réseau avec serveur dédié? Serveur dédié dans réseau client/serveur Partage de données : serveur de fichiers Partage de logiciels : serveur d ’applications Partage de ressources : serveur d ’impression Yves Lise Louis Lucie

Carte d’interface réseau Carte d ’interface réseau (NIC - network interface card) Carte d'interface qui assure la transmission de données entre un ordinateur ou un serveur et un réseau. Les cartes réseau sont généralement Ethernet, Token Ring ou FDDI. Les plus répandues sont les cartes Ethernet 10/100 Mbps. Lien physique entre le poste de travail et le câble réseau La carte réseau est munie de son propre microprocesseur

Types de câbles Fibre optique Paire torsadée Câble coaxial

Types de câbles 1. Signal électrique dans un conducteur de cuivre Paire torsadée non blindée (UTP - Unshielded Twisted Pair). 8 fils de cuivre torsadés 2 à 2. Sensible aux interférences électro-magnétiques. Type 3 (10 BaseT) ou type 5 (100 BaseT). Ressemble au câble téléphonique. Le plus utilisé (cf. Topologie étoile) Paire torsadée blindée (STP - Shielded Twisted Pair). Type 1. Conducteurs plus gros que dans non blindé. Blindage externe protège des interférences. (cf. Topologie anneau) Câble coaxial : câble robuste. Peut être tiré sur de longues distances. Peu sensible aux interférences électro-magnétiques(cf. Topologie bus).

Types de câbles 2. Signal lumineux dans un tube de verre Fibre optique : transmission plus rapide (100 Mbps) Utilisée pour des liaisons longue distance Insensible aux interférences électro-magnétiques. Installation délicate Coûteux Topologie étoile ou anneau

Types de câbles Chaque type de câble présente des restrictions quant au nombre de connexions possibles, la distance entre les connexions, la longueur maximale du câblage.

Réseaux sans fils 1. Infrarouge 2. Radio-fréquences Fiable mais sensible. Le récepteur doit être à portée optique de l ’émetteur sinon le signal est coupé. 2. Radio-fréquences Émetteur-récepteur. Le poste de travail doit être en liaison radio avec le serveur.

Topologie de réseau Configuration physique de l'interconnexion au moyen de câbles des équipements d'un réseau local. Topologie en bus Topologie en étoile Topologie en anneau Topologie en arbre

Topologie en bus Structure de réseau dans laquelle chaque station de travail est reliée à un câble linéaire porteur du signal. Seul le nœud destinataire s ’occupe de l ’information qui lui est destinée.

Topologie en bus Utilise le câble coaxial Peu sensible aux perturbations électromagnétiques Si il y a un bris de câble, toute communication sur le réseau est impossible

Topologie en étoile Structure de réseau où chaque station est reliée à un point central. Liaison dite point à point.

Topologie en étoile Utilise le câble en paire torsadée ou en fibre optique Avantage: si il y a bris du câble d ’un poste, ça n ’affecte pas le reste du réseau Désavantage: requiert plus de câble que la topologie bus Réseau 10BaseT: débit 10 Mbps; câble de paire torsadée (Twisted pair); carte Ethernet : très répandu. Réseau 100BaseT ou Fast Ethernet: débit de 100 Mbps

Topologie en étoile Hub ou répéteur multiport : Organe de raccordement d'un réseau capable de recevoir, de répéter et de régénérer les signaux que lui acheminent des circuits qui lui sont reliés à la manière des branches d'une étoile et qui le rejoignent à travers de multiples ports.

Topologie en anneau Structure de réseau où les stations et le serveur sont reliées de manière à former un circuit bouclé.

Topologie en anneau Si il y a bris d ’un câble, le reste du réseau n ’est pas affecté si on utilise un double anneau Utilise de la paire torsadée ou de la fibre optique Requiert plus de câble que la topologie bus mais moins que la topologie étoile

Topologie en arbre Structure de réseau qui combine les caractéristiques des topologies bus et étoile

Topologie en arbre La longueur totale de chaque segment est limitée par le type de câble utilisé Si le câble dorsal fait défaut, tout le segment tombe en panne Plus difficile à configurer que les autres topologies

Comment circule l ’information dans le réseau Essentiellement, trois méthode basées sur trois protocoles de communication: 1. Détection de collision (probabiliste) - Technologie Ethernet Norme 802.3 de IEEE (Institute of Electrical and Electronics Engineers). Protocole CSMA/CD (Carrier Sense Multiple Access with Collision Detection) Réseaux basés sur cartes Ethernet. Topologie bus logique et étoile physique. Câble coaxial, paire torsadée ou fibre optique. Taux de transmission : 10 ou100 Mbps

Comment circule l ’information dans le réseau 2. Le jeton (déterministe) - Technologie Token Ring Norme 802.5 de IEEE Protocole Token Ring Utilisé dans les réseaux basés sur les cartes Token Ring Topologie anneau Paire torsadée blindée ou fibre optique Taux de transmission : 4 ou 16 Mbps

Comment circule l ’information dans le réseau 3. FDDI (Fiber Distributed Data Interface) Norme ANSI X3T9.5 (très semblable à 802.5 Token Ring). 2 anneaux. Fibre optique Pour haut taux de transfert (100 Mbps) Utilisé pour applications qui nécessitent beaucoup de bande passante (p. ex.: imagerie médicale)

Modèle OSI Modèle de référence pour l ’interconnexion de systèmes ouverts développé par l ’ISO Modèle de référence en couches destiné à fournir un cadre conceptuel aux échanges entre systèmes hétérogènes. Découpe les différentes parties d ’un réseau informatique en 7 couches distinctes. 1. Couche physique (câbles, connecteurs) 2. Couche liaison de données 3. Couche réseau 4. Couche transport 5. Couche session 6. Couche présentation 7. Couche application (communication logiciel et réseau. par.ex. ftp, smtp, etc)

Système d’exploitation réseau Les systèmes d ’exploitation réseau (NOS - network operating system) peuvent tourner sur n ’importe quel réseau standard (Ethernet, Token Ring ou FDDI). Les principaux sont : Windows NT Server ou Windows 2000 Server de Microsoft (41% du marché des nouveaux achats) Netware de Novell (13.8%) UNIX (13.9%) Linux (27%) Source : IDC. 10 septembre 2001. http://www.idc.com/software/press/PR/SW091001pr.stm.

Système d ’exploitation réseau Intègre différents protocoles réseau. Protocole = ensemble des règles, codes et signaux, conçu pour établir la communication et contrôler les échanges d'informations entre deux entités distinctes à travers un réseau. Par exemple, le protocole IPX de Novell, le protocole TCP/IP (Transmission Control Protocol/Internet Protocol) utilisé pour la communication entre ordinateurs sur Internet. Il y a plus d'une centaine de protocoles réunis dans le protocole TCP/IP. Mis à part les protocoles TCP et IP, les trois autres principaux protocoles de cette famille sont le protocole SMTP régissant le courrier électronique, le protocole FTP pour le transfert de fichiers et le protocole Telnet pour la connexion à distance.

Système d ’exploitation réseau La partie client du système d ’exploitation réseau installée sur le poste de travail redirige les requêtes des usagers du poste de travail vers le serveur via la carte réseau et le câble. L’utilisateur se connecte au serveur depuis son poste avec un login et un mot de passe. Ensuite, il peut accéder aux données du serveur selon les droits que lui a accordés l’administrateur.

Étapes d ’implantation d ’un réseau local 1.Désignation d ’un administrateur réseau 2.Choix du matériel, de la topologie du réseau et du système d ’exploitation réseau. 3.Mise au point d ’une méthodologie d ’implantation 4.Installation des équipements (serveur, postes de travail, cartes et câbles) 5.Configuration du système d ’exploitation réseau sur le serveur (droits d ’accès par groupes d ’utilisateurs + sécurité d ’accès (mots de passe, droits des utilisateurs en lecture, écriture, etc.)

Étapes d ’implantation d ’un réseau local 6.Installation des logiciels d ’application sur le serveur et/ou les postes de travail 7.Création de l ’interface utilisateur sur les postes de travail 8.Mise en place des procédures pour le suivi de la gestion des ressources (copies de sauvegarde du serveur , des données des usagers, mise à jour des logiciels, etc.) 9.Rédaction de la documentation de l’administrateur et de l ’usager 10.Test du réseau 11.Formation des usagers

On peut restreindre l ’accès aux dossiers partagés par mot de passe Un poste relié en réseau peut accéder à des disques qui ne sont pas sur son poste mais plutôt sur d ’autres ordinateurs connectés au réseau Dans la plupart des cas, on n ’accède qu ’à certains dossiers de ces disques réseau qu ’on appelle dossiers partagés On peut restreindre l ’accès aux dossiers partagés par mot de passe Nomenclature : \\nom du serveur\nom du partage

Intranet - Définition Réseau informatique privé faisant appel aux outils, protocoles (TCP/IP) et technologies d ’Internet au sein d ’un réseau corporatif local ou étendu On se sert d ’un navigateur Web pour le parcourir et on assure sa sécurité au moyen d ’un coupe-feu (firewall) lorsqu ’il est relié à Internet

Intranet L'intranet répond à divers besoins de l ’entreprise: Partage de l'information : édition, publication et accès - recherche, navigation et consultation Développement de la collaboration et des échanges : messagerie, agendas et tâches partagés Programmation et intégration des applications : développement personnalisé, base de données, mises à jour

Extranet - Définition Réseau informatique constitué des intranets de plusieurs entreprises qui communiquent entre elles, à travers le réseau Internet, au moyen d ’un serveur Web sécurisé.

Mécanisme de communication : sockets Module Java Mécanisme de communication : sockets

La classe java.net.InetAddress Représentation des adresses réseaux Internet 134.206.10.18, www.lifl.fr Création InetAddress host = InetAddress.getLocalHost(); InetAddress host = InetAddress.getByName("www.lifl.fr"); InetAddress host[] = InetAddress.getAllByName("www.lifl.fr"); Propriétés Adresse symbolique : String getHostName() Adresse IP : String getHostAddress() Adresse binaire : byte[] getAddress() boolean isMulticastAddress() Méthodes equals, toString, hashCode

Obtenir un objet java.net.InetAddress import java.net.InetAddress; try { InetAddress adresseLocale = InetAddress.getLocalHost(); } catch(java.net.UnknownHostException ex) { . . . } InetAddress adresse = InetAddress.getByName("www.lifl.fr"); InetAddress[] adresses = InetAddress.getAllByName("www.lifl.fr");

Accès aux propriétés d’un objet java.net.InetAddress public static void afficher(InetAddress adresse) { String chaine = adresse.toString(); String nom = adresse.getHostName(); String ip = adresse.getHostAddress(); byte[] binaire = adresse.getAddress(); boolean multicast = adresse.isMulticastAddress()) }

Quelques protocoles Internet IP pour Internet Protocol protocole de routage des messages sur Internet datagrammes de machine à machine UDP pour User Datagram Protocol protocole de transport non fiable de messages datagrammes de port à port Multicast IP protocole de diffusion non fiable de messages datagrammes vers groupe TCP pour Transmission Control Protocol protocole de transport fiable de messages flux de port à port Port = identifiant symbolique d’un processus / un service

Le principe d’une socket Application A Application B send / receive send / receive @IP #port @IP #port Réseau Une socket = une prise logicielle d’accès au réseau @IP de la machine où elle est créée #port identifiant unique

Module Java Les Sockets UDP/IP

Principes UDP pour User Datagram Protocol sur IP Communication orientée paquets primitives send() et receive() Transfert paquets / datagrammes non fiables ! perte de paquets sur Internet duplication pas de contrôle d'erreurs ordre non garanti Plus performant que TCP/IP pas de surcoût pour établissement / contrôle de la connexion pas de retransmissions Exemple : la visio-conférence perte d'une trame non dramatique !

La communication en UDP Application réceptrice Application émettrice s = DatagramSocket(#port) s = DatagramSocket() p = DatagramPacket( data, @IP, #port) p = DatagramPacket(buf) Paquet s.receive(p) s.send(p) traiter(p) s.close() s.close()

Un serveur UDP import java.net.*; public class ServeurUDP { public static void main (String args[]) throws Exception { DatagramSocket ds = new DatagramSocket(8000); while (true) { DatagramPacket msg = new DatagramPacket( new byte[512], 512); ds.receive(msg); System.out.println(« Recu » + new String(msg.getData())); String texteReponse = « OK »; DatagramPacket reponse = new DatagramPacket( texteReponse.getBytes(), texteReponse.length(), msg.getAddress(), msg.getPort()); ds.send(reponse); }}}

Un client UDP import java.net.*; public class ClientUDP { public static void main (String args[]) throws Exception { String message = "Hello world!"; DatagramSocket ds = new DatagramSocket(); DatagramPacket envoi = new DatagramPacket( message.getBytes(), message.length(), InetAddress.getByName("localhost"), 8000); ds.send(envoi); DatagramPacket msg = new DatagramPacket(new byte[512], 512); ds.receive(msg); System.out.println ( new String(msg.getData()) ); ds.close(); }}

La classe java.net.DatagramPacket (1/2) Représente un paquet UDP tampon de données, longueur, adresse IP, port Constructeurs new DatagramPacket(buffer, taille) new DatagramPacket(buffer, taille, inetAddress, port) Propriétés Buffer : byte[] getData() Taille buffer : int getLength() Adresse IP : InetAddress getAddress() Port IP : int getPort() Modification : setData, setLength, setAddress, setPort

La classe java.net.DatagramPacket (2/2) Un émetteur crée un DatagramPacket avec les données, la longueur, l'adresse et le numéro de port du destinataire byte[] tampon = new byte[8096]; ia = InetAddress.getByName("www.lifl.fr"); DatagramPacket dp = new DatagramPacket(tampon, tampon.length, ia, 1000); Un récepteur alloue le tampon pour recevoir le paquet et le passe au constructeur de DatagramPacket dp = new DatagramPacket(tampon, tampon.length); A la réception, le DatagramPacket contient les données, l’adresse et le port de l’émetteur Le tampon peut être réutilisé pour plusieurs envois / réceptions

La classe java.net.DatagramSocket Une prise pour pouvoir communiquer en UDP peut être connectée à une socket pair Constructeurs socket anonyme : new DatagramSocket() socket avec port : new DatagramSocket(1000) new DatagramSocket(1000,inetAddress) Propriétés l’adresse locale : InetAddress getLocalAddress() l’adresse distante : InetAddress getAddress() le port local : int getLocalPort() le port distant : int getPort() Méthodes connexion : void connect(InetAddress ia, int port) émission : void send(DatagramPacket dp) réception : void receive(DatagramPacket dp) fermeture : void close()

Les Sockets Multicast IP Module Java Les Sockets Multicast IP

Applications Multicast IP Délivrer un message à un ensemble de destinataires Plus efficace que l'envoi d'un message à chaque destinataire pris en charge par les routeurs Destinataires sont identifiés par une unique adresse de groupe indépendante de la localisation des destinataires adressage logique des groupes : RFC 966 et 1112 classe D : 224.x.x.x - 239.x.x.x mais adresse choisie à la main ! Les membres du groupe peuvent changer à tout moment primitives d'adhésion et de sortie d'un groupe

Quelques exemples d'applications Multicast IP Transmission de vidéo sur Internet : MBONE Jeux répartis multi-utilisateurs temps réel Systèmes de fichiers distribués sans connaître la localisation physique réplication, tolérances aux pannes Services de localisation de ressources rechercher une ressource WWW le serveur le plus proche répond Bref beaucoup d'applications intéressantes !

La communication en Multicast IP Application réceptrice Application émettrice s = MuticastSocket(#port) s.joinGroup(@IP) s = MuticastSocket() p = DatagramPacket( data, @IP, #port) p = DatagramPacket(buf) Paquet s.receive(p) s.send(p) traiter(p) s.close() s.close()

Un serveur Multicast IP import java.net.*; public class ServeurMulticastIP { public static void main (String args[]) throws Exception { InetAddress mcast = InetAddress.getByName("225.1.1.1"); MulticastSocket ms = new MulticastSocket(8000); ms.joinGroup (mcast); while (true) { DatagramPacket msg = new DatagramPacket( new byte[512], 512); ms.receive(msg); System.out.println(msg.getAddress() + ":" + msg.getPort() + " a envoyé " + new String(msg.getData())); } } }

Un client Multicast IP import java.net.*; public class ClientMulticastIP { public static void main (String args[]) throws Exception { String message = "Hello world!"; MulticastSocket ms = new MulticastSocket(); InetAddress mcast = InetAddress.getByName("225.1.1.1"); DatagramPacket dp = new DatagramPacket( message.getBytes(), message.length(), mcast, 8000); for (int i=0; i<10; i++) ms.send(dp, (byte)1); ms.close(); }}

La classe java.net.MulticastSocket Prise pour communiquer en Multicast IP Sous classe de java.net.DatagramSocket Nouvelles méthodes joindre un groupe : void joinGroup (InetAddress mcast); quitter un groupe : void leaveGroup (InetAddress mcast); émission : void send(DatagramPacket dp, byte ttl); Diffusion contrôlable : champ time-to-live (TTL) TTL = nombre de réseaux à franchir TTL = 0 : même machine TTL = 1 : même sous-réseau TTL = 2..254 : selon topologie TTL = 255 : aucune restriction !

Synthèse sur sockets UDP et Multicast IP API simple peu de primitives de communication Communication efficace peu de surcoût par rapport transport IP Non fiable ! perte et/ou duplication de messages sur Internet Programmation clients != programmation serveurs ! asymétrie des primitives de communication Rien pour la structuration de l’application ! API bas niveau, transfert de paquets d’octets taille du tampon à allouer pour la réception ? Seulement approprié pour des applications sur réseaux locaux mais nécessite une fiabilisation réalisée par l’application ex. Network File System (NFS)

Module Java Les Sockets TCP / IP

Principes TCP/IP : Transmission Control Protocol sur IP Propriétés de la communication point à point , un circuit virtuel bidirectionnelle transport fiable orienté flux d’octets séquencement de données non dupliquées sans séparateur d'enregistrement => un « pipe » étendu au réseau Interface de programmation de la couche Transport de l’Internet

Principes Socket = prise applicative de communication réseau 2 couples @IP + port adresse locale de la socket / adresse distante de la socket pair @IP = adresse machine physique port = identifiant unique sur la machine Fonctionnement Serveur crée une socket et attend les requêtes des clients Client se connecte à la socket d'un serveur, envoie ses requêtes Dialogue client/serveur à travers des flux de données

Le schéma de fonctionnement Serveur Client s = ServerSocket(port#) connexion c = s.accept() s = Socket(@IP,port#) InputStream lecture lecture InputStream pipe réseau OutputStream écriture écriture OutputStream c.close() s.close() s.close()

Exemple de serveur TCP/IP : Daytime sur port 13 import java.net.*; import java.io.*; public class ServeurDaytime { public static void main(String args[]) throws Exception { ServerSocket serveur = new ServerSocket(13); while (true) { System.out.println(serveur + " en attente !"); Socket client = serveur.accept(); System.out.println(client + " connecté"); PrintStream flux = new PrintStream(client.getOutputStream()); flux.println(new java.util.Date()); client.close(); } serveur.close(); } }

Exemple de client TCP/IP : Daytime sur port 13 import java.net.*; import java.io.*; public class ClientDaytime { public static void main(String args[]) { try { Socket socket = new Socket("localhost", 13); BufferedReader flux = new BufferedReader( new InputStreamReader(socket.getInputStream())); String dateHeure = fluxHeure.readLine(); System.out.println("La date et l'heure sont  » + dateHeure); socket.close(); } catch (UnknownHostException err) { System.err.println ("ClientDaytime : " + err); } catch (IOException err) { } } }

La classe java.net.ServerSocket Pour les serveurs attendant des connexions clientes Différents constructeurs : ServerSocket s = new ServerSocket(8000); ServerSocket s = new ServerSocket(port,tailleFile); si port=0 alors le système choisit automatiquement le port Propriétés : adresse IP : InetAddress getInetAddress(); port : int getLocalPort(); timeout : setSoTimeout, getSoTimeout Méthodes : attendre une connexion : Socket accept(); fermer la socket : void close(); affichage : String toString() => ServerSocket[addr=,port=,localport=8000]

La création et connexion des sockets serveurs et clientes (1) s = new ServerSocket(8080) ServerSocket @IP=«M2» port=8080 Connexion réseau (3) s = new Socket(«M2»,8080) (2) c = s.accept() Socket @IP=«M1» port=40345 Socket @IP=«M2» port=50000 pipe réseau

La classe java.net.Socket Utiliser durant les communications TCP/IP Différents constructeurs pour établir la connexion : Socket s = new Socket("www.lifl.fr", 80); Socket s = new Socket(inetAddress, 8000); Propriétés : adresse IP : InetAddress getInetAddress(), getLocalAdress() port : int getPort(), getLocalPort() flux in : InputStream getInputStream() flux out : OutputStream getOutputStream() options set/get : TcpNoDelay, SoLinger, SoTimeout Méthodes : fermeture de la socket : void close(); affichage : String toString() => Socket[addr=www.lifl.fr/134.206.10.x,port=80,localport=50000]

La relation entre deux sockets connectées Socket A sur M1 Socket B sur M2 @IP=«M2» port=5040 @IP=«M1» port=6070 Distante Locale @IP=«M1» port=6070 @IP=«M2» port=5040 Distante Locale pipe réseau A.getInetAddress() == B.getLocalInetAddress() A.getPort() == B.getLocalPort() A.getLocalInetAddress() == B.getInetAddress() A.getLocalPort() == B.getPort()

L’application Telnet Telnet Ecran Clavier Serveur écrit lit Socket TCP Telnet = terminal texte pour dialoguer avec tout serveur TCP utilisant un protocole ASCII

Quels mots sur la classe java.lang.Thread Permet de lancer des flots d’exécution simultanés au sein d’un même processus calcul parallèle, animation, . . . attente sur entrée/sortie bloquante Méthodes démarrage : void start(); arrêt : void interrupt(); attente fin : void join(); traitement : void run(); . . . Doit être héritée ou instanciée sur 1 objet implantant l’interface java.lang.Runnable

Le thread de redirection de flux public class RedirigerFlux extends Thread { protected java.io.BufferedReader fluxLecture = null; protected java.io.PrintStream fluxEcriture = null; public RedirigerFlux (java.io.InputStream fl, java.io.OutputStream fe) { fluxLecture = new java.io.BufferedReader( new java.io.InputStreamReader(fl)); fluxEcriture = new java.io.PrintStream(fe); super.start(); } public void run() { try { String s; while ( (s = fluxLecture.readLine()) != null ) fluxEcriture.println(s); } catch (java.io.IOException err) {} } }

L’application Telnet en Java public class Telnet { public static void main(String args[]) throws Exception { java.net.Socket socket = new java.net.Socket(machine, port); // Création du thread redirigeant la socket vers l'écran. RedirigerFlux socketVersEcran = new RedirigerFlux(socket.getInputStream(), System.out); // Création du thread redirigeant le clavier vers la socket. RedirigerFlux clavierVersSocket = new RedirigerFlux(System.in, socket.getOutputStream()); // Attendre la fin de lecture sur la socket.. socketVersEcran.join(); // Arrêter de lire le clavier. clavierVersSocket.interrupt(); } }

Un serveur TCP/IP multi - clients Connexion Client ServerSocket accept() Client connecté Socket read() read() Client connecté Socket Primitives accept() et read() bloquantes ! => besoin de threads dans le serveur pour gérer simultanément plusieurs clients !

Un serveur TCP/IP multi-threadé import java.net.*; public class ServeurMultiThreade { public static void main(String args[]) throws Exception { ServerSocket serveur = new ServerSocket(#port); while (true) { System.out.println(serveur + " en attente !"); Socket client = serveur.accept(); new GestionnaireClient(client); } serveur.close();

Le thread gestionnaire des clients public class GestionnaireClient extends Thread { protected java.net.Socket client; public GestionnaireClient(java.net.Socket s) client = s; super.start(); } public void run() try { // Traiter les requêtes clientes . . . puis client.close(); } catch(Exception exc) { . . . } } }

Synthèse sur les sockets TCP/IP API simple et fiable peu de primitives orientées communication Programmation clients != programmation serveurs ! asymétrie des primitives de communication De nombreuses questions à se poser avant d’utiliser les primitives ! Voir cours problèmes et solutions Rien pour la structuration de l’application ! Seulement approprié pour des applications réparties simples (1 client vers 1 serveur) ou comme brique de base pour des couches middleware plus évoluées par ex. : WWW, FTP, email, news, . . .