Le réseau. Sommaire. Ce chapitre concerne les classes du package java.net qui permettent de travailler avec le réseau au niveau applicatif.



Documents pareils
Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Le modèle client-serveur

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Programmation Internet en Java

Programmation client-serveur sockets - RPC

M1 MIAGE - Réseau TP1

Dis papa, c est quoi un bus logiciel réparti?

Cours 6 : Programmation répartie

18 TCP Les protocoles de domaines d applications

Cahier des Charges du Projet Domotique. Choquet Mathieu Masson Jérôme Groupe 6. Domotique. p.1

Services Réseaux - Couche Application. TODARO Cédric

RMI le langage Java XII-1 JMF

L3 informatique TP n o 2 : Les applications réseau

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Programmation Réseau. ! UFR Informatique ! Jean-Baptiste.Yunes@univ-paris-diderot.fr

Gestion distribuée (par sockets) de banque en Java

Flux de données Lecture/Ecriture Fichiers

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Oléane VPN : Les nouvelles fonctions de gestion de réseaux. Orange Business Services

Programmation Réseau SSH et TLS (aka SSL)

Projet de programmation (IK3) : TP n 1 Correction

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Cours CCNA 1. Exercices

Développement Logiciel

Java DataBaseConnectivity

Principes des Architectures Middleware version 2.0

Remote Method Invocation (RMI)

Glossaire. ( themanualpage.org) soumises à la licence GNU FDL.

Serveurs de noms Protocoles HTTP et FTP

Introduction à HTTP. Chapitre HTTP 0.9

LA COUCHE TRANSPORT CONTRÔLE LE FLOT DE DONNEES TRANSMISES par la couche Réseau

Réseaux et protocoles Damien Nouvel

Programmation Internet Cours 4

Synchro et Threads Java TM

Programmer en JAVA. par Tama

Mr. B. Benaissa. Centre universitaire Nâama LOGO

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Proxy et reverse proxy. Serveurs mandataires et relais inverses

Introduction. Adresses

Entrées / Sorties. Entrées / Sorties. Entrées/Sorties. System.out. Fonctionnement par flots (stream) Karima Boudaoud IUT- R&T. Terrain connu.

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Figure 1a. Réseau intranet avec pare feu et NAT.

Traitement de données

Réseaux Locaux. Objectif du module. Plan du Cours #3. Réseaux Informatiques. Acquérir un... Réseaux Informatiques. Savoir.

GENERALITES. COURS TCP/IP Niveau 1

Internets. Informatique de l Internet: le(s) Internet(s) Composantes de l internet R3LR RENATER

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Cisco Certified Network Associate

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Présentation du modèle OSI(Open Systems Interconnection)

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

SSL. Secure Socket Layer. R. Kobylanski janvier version 1.1 FC INPG. Protocole SSL Application avec stunnel

Culture informatique. Cours n 9 : Les réseaux informatiques (suite)

Cours 14 Les fichiers

II/ Le modèle OSI II.1/ Présentation du modèle OSI(Open Systems Interconnection)

Introduction à JDBC. Accès aux bases de données en Java

Packet Tracer : configuration des listes de contrôle d'accès étendues, scénario 1

NAS 224 Accès distant - Configuration manuelle

Généralités sur le Langage Java et éléments syntaxiques.

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Introduction aux Technologies de l Internet

Chapitre : Les Protocoles

L3 informatique Réseaux : Configuration d une interface réseau

Serveur d'archivage 2007 Installation et utilisation de la BD exist

1. Fonctionnement de l Internet 2. Protocoles applicatifs 3. Programmation réseau

PROGRAMMATION PAR OBJETS

Couche application. La couche application est la plus élevée du modèle de référence.

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

Le Network File System de Sun (NFS)

Un ordonnanceur stupide

Auto-évaluation Programmation en Java

Java Licence Professionnelle CISII,

Le service FTP. M.BOUABID, Page 1 sur 5

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

TP Linux : Firewall. Conditions de réalisation : travail en binôme. Fonctionnement du parefeu Netfilter. I Qu est ce qu'un firewall?

Guide de configuration de la Voix sur IP

Cours 1: Java et les objets

M1101a Cours 4. Réseaux IP, Travail à distance. Département Informatique IUT2, UPMF 2014/2015

Présentation Internet

LINUX REDHAT, SERVICES RÉSEAUX/INTERNET

Plan du Travail. 2014/2015 Cours TIC - 1ère année MI 30

Tunnels et VPN. 22/01/2009 Formation Permanente Paris6 86

Firewall. Souvent les routeurs incluent une fonction firewall qui permet une première sécurité pour le réseau.

Services sur réseaux. Trois services à la loupe. Dominique PRESENT Dépt S.R.C. - I.U.T. de Marne la Vallée

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

Java et les bases de données

LINUX - Sécurité. Déroulé de l'action. - 3 jours - Contenu de formation

Réseau : Interconnexion de réseaux, routage et application de règles de filtrage.

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Transcription:

Le réseau Ce chapitre concerne les classes du package java.net qui permettent de travailler avec le réseau au niveau applicatif. Sommaire 1.LES URL... 2 1.1DÉFINITIONS...2 1.2LES CLASSES URL ET URLCONNECTION... 2 2.LES ADRESSES RÉSEAU (IP)... 3 3.LES TRANSMISSIONS D'INFORMATIONS...3 3.1ARCHITECTURE CLIENT/SERVEUR...3 3.2CONNEXION À UN SERVEUR... 3 3.3PROTOCOLES... 4 4.UDP...4 4.1EMETTEUR...4 4.2RECEPTEUR... 4 5.TCP... 5 5.1LE CLIENT : CLASSE SOCKET... 5 5.2 LE SERVEUR : CLASSES SERVERSOCKET ET SOCKET... 6

1.Les URL 1.1Définitions URL = Uniform Resource Locator Une URL est une adresse qui permet de localiser une ressource sur un réseau. Elle contient : Le protocole utilisé : http, ftp, file, telnet, news, mailto Le nom du serveur ou son adresse IP (voire un numéro de port) Le chemin et le nom du fichier qui fournira les informations http://www.iutc3.unicaen.fr/~rohard/info2a/index.html Les classes Java ne supportent que les protocoles http, ftp, udp, tcp et file (Java 7 : SCTP, SDP, TLS,...). 1.2Les classes URL et URLConnection La classe URL permet de représenter le nom et l' adresse d'une ressource. URL u = new URL( ''http://www.iutc3.unicaen.fr/~rohard'' ); ou new URL( ''http'', ''www.iutc3.unicaen.fr'', ''~rohard'' ); ou d'autres encore... Cette classe fournit la méthode openconnection() qui permet d'ouvrir une connexion réseau correspondant à cette adresse. Cette méthode retourne un objet de type URLConnection. La classe URLConnection permet de représenter une connexion à une ressource distante : elle permet de récupérer un flux d'octet en entrée ou en sortie vers cette ressource. (méthodes getinputstream() et getoutputstream()). class WebTexte { public static void main(string args[]) { try { URL u = new URL(args[0]) ; URLConnection c = u.openconnection() ; BufferedReader in = new BufferedReader ( new InputStreamReader ( c.getinputstream())); String s ; while(( s = in.readline())!= null) System.out.println( s ) ; catch (IOException e) { System.out.println(e.getMessage()) ; Module I6 - Programmation événementielle et Réseau 2/6

2.Les adresses réseau (IP) La classe InetAddress permet de construire et de représenter une adresse IP. On ne peut pas directement construire un objet de cette classe, mais celle-ci offre plusieurs méthodes statiques qui permettent de construire et récupérer la référence d'un objet InetAddress : static InetAddress getbyname(string nomouadresse) ; // à partir d'un nom de serveur static InetAddress getbyaddress( byte[] adr ) ; // à partir d'un tableau de bytes static InetAddress[] getallbyname(string nomouadresse) ; // pour toutes les adresses d'un serveur static InetAddress getlocalhost() ; // pour l'adresse de la machine locale InetAddress a1 = InetAddress.getByName("www.iutc3.unicaen.fr") ; InetAddress a2 = InetAddress.getByName("193.252.148.80") ; InetAddress a3 = InetAddress.getLocalHost() ; String adr = a1.gethostaddress(); String nom = a1.gethostname(); 3.Les transmissions d'informations 3.1Architecture Client/Serveur Serveur : processus rendant un service spécifique identifié par un port particulier (n port), en attente sur une station (@IP) Client : processus appelant le serveur afin d obtenir le service, lancé à la demande à partir généralement de n importe quelle station. Port : sur une même machine plusieurs services peuvent être proposés (web, email, ftp,...) et doivent être accessibles simultanément les points d'accès de ces services sont les 65536 (16 bits) ports logiques (numérotés de 0 à 65535), à ne pas confondre avec les ports physiques (série et parallèle) http://www.iana.org/assignments/port-numbers liste dans /etc/services 3.2Connexion à un serveur Ports réservés (well known ports) Ports déclarés mais utilisables (registred ports) Ports libres (dynamic or privates ports) N port Service 0 Spécial 7 Echo 13 Daytime 21 Ftp 22 Ssh 23 Telnet 25 Smtp 37 Time 80 Www http 110 Pop3 143 Imap 443 Https 1024 1025 49151 49152 65535 $ telnet machine port $ telnet time-a.timefreq.bldrdoc.gov 13 (machine du NIST, Colorado, heure d'une horloge atomique au césium) 54807 08-12-07 15:51:32 00 1 0 819.1 UTC(NIST) $ Module I6 - Programmation événementielle et Réseau 3/6

3.3Protocoles Mode non connecté : il n'y a pas de connexion entre les 2 machines, chaque message doit contenir l'adresse de son destinataire protocole UDP sur Internet principe du SMS ou du courrier postal non fiable mais rapide chaque machine peut être émetteur ou récepteur Mode connecté : déroulement : le serveur se prépare à recevoir une demande de connexion (méthode bloquante) un client demande une connexion au serveur (méthode bloquante) si la demande est acceptée : envois/réceptions de messages tant que la connexion n'est pas close protocole TCP sur Internet principe du téléphone fiable mais lent une machine est serveur, les autres sont clientes 4.UDP Un émetteur et un récepteur, utilisant chacun les classes DatagramSocket et DatagramPacket. 4.1Emetteur DatagramSocket dsout = new DatagramSocket(); String message = ''bonjour''; byte[] mess = message.getbytes(); // transformation des données à envoyer en bytes DatagramPacket outdata = new DatagramPacket (mess, mess.length, inetaddressdestination, port); dsout.send(outdata); 4.2Recepteur DatagramSocket dsin = new DatagramSocket( port ); // nécessite le n du port byte[] data = new byte[max]; DatagramPacket indata = new DatagramPacket(data, data.length); dsin.receive(indata); System.out.println( new String ( indata.getdata() ) ); System.out.println( ''Emetteur : ''+ indata.getadress().gethostname() +'' sur le port ''+ indata.getport() ); Module I6 - Programmation événementielle et Réseau 4/6

5.TCP 5.1Le client : classe Socket La classe Socket permet de créer et gérer une connexion TCP/IP vers un serveur distant sur un port donné. Voici quelques méthodes : Socket ( InetAddress serv, int port ) ; Socket ( String nomserv, int port) ; // entre autres InputStream getinputstream() ; OutputStream getoutputstream() ; void close(); // termine le socket et ferme les flux ouverts int getport() ; // retourne le port utilisé à distance int getlocalport() ; // retourne le port utilisé localement InetAddress getinetaddress() ; // retourne l'adresse utilisée à distance InetAddress getlocaladdress() ; // retourne l'adresse utilisée localement import java.io.*; import java.net.*; public class Client { private Socket sock ; Client ( String serveur ) { try { sock = new Socket (serveur, 50000) ; // envoi d'un message PrintWriter out = new PrintWriter ( new OutputStreamWriter (sock.getoutputstream()),true); // true permet de faire de l'auto-flush. out.println("bonjour Serveur de la part de : " + InetAddress.getLocalHost()) ; // réception d'un message BufferedReader in = new BufferedReader ( new InputStreamReader ( sock.getinputstream())) ; System.out.println(in.readLine());// readline() bloquant sock.close() ; catch (Exception e) { System.out.println(e.getMessage()) ; public static void main(string args[]) { new Client( args[0]) ; Module I6 - Programmation événementielle et Réseau 5/6

5.2 Le serveur : classes ServerSocket et Socket Pour écrire un serveur, il est nécessaire de pouvoir se mettre à l'écoute de demandes de connexion en provenance des clients. C'est le rôle des instances de la classe ServerSocket : on construit une instance de cette classe en lui fournissant le numéro du port sur lequel elle doit se mettre à l'écoute et il suffit alors d'utiliser la méthode accept() sur l'objet construit pour se mettre en attente d'une connexion. La méthode accept() est bloquante jusqu'à ce qu'une connexion se produise et elle renvoie alors une référence sur un objet de type Socket pour gérer la nouvelle connexion. La suite du code est alors similaire à ce qui se passe sur un client (utilisation de Socket). import java.io.*; import java.net.*; public class Serveur { private ServerSocket serv ; private Socket client ; Serveur() { try { serv = new ServerSocket(50000) ; client = sock.accept() ; //bloquant BufferedReader in = new BufferedReader ( new InputStreamReader ( client.getinputstream())) ; System.out.println(in.readLine()); //bloquant PrintWriter out = new PrintWriter ( new OutputStreamWriter ( client.getoutputstream()),true); // true permet de faire de l'auto-flush. out.println("bonjour Client de la part de " + InetAddress.getLocalHost() ) ; client.close() ; catch (Exception e) { System.out.println(e.getMessage()) ; public static void main(string argv[]) { new Serveur( ) ; Le serveur défini dans l'exemple précédent ne permet pas de traiter plus d'une connexion. Module I6 - Programmation événementielle et Réseau 6/6