programmation réseau en java
Post on 17-Feb-2017
446 Views
Preview:
TRANSCRIPT
Dirigé par:
M. BOUKHELKHAL Ahmed
Travail Réalisé par : BENYAMMI Bachir
HASSANI Mustapha
OULD BAHAMMOU Abdelaziz
Niveau: 4eme Année informatique - Cycle long
Ministère de l’Enseignement et de la Recherche Scientifique
UNIVERSITE AMAR TELIDJI
LAGHOUAT
FACULTE DES SCIENCES ET DE L’INGENIERIE
DEPARTEMENT DE GENIE INFORMATIQUE
Module Réseau et Communication
THÈME:
Année Universitaire
2006-2007
13 janvier 2016 Programmation Réseau en JAVA 2
Plan
Introduction.
JAVA (Historique, Caractéristiques, API,…).
Réseau (TCP-IP, TCP, UDP, Socket, Port, Diffusion, URLs, …).
Adressage et Internet (Couche Réseau).
Communication par Sockets (couche Transport).
Ressources Internet (URL) (couche Application).
Exceptions liées aux réseaux.
Conclusion.
Bibliographie.
P
L
A
N
D
U
T
R
A
V
A
I
L
13 janvier 2016 Programmation Réseau en JAVA 3
I - Introduction
Depuis son origine, Java fournit plusieurs
classes et interfaces destinées à la
programmation réseau, à cause de son API
qui a été bien conçu et riche d'une côté, et
traité la plupart des interfaces, protocoles et
plateformes d'autres côté; la programmation
des applications réseaux en JAVA est
devenue un choix primordial.
I
N
T
R
O
D
U
C
T
I
O
N
13 janvier 2016 Programmation Réseau en JAVA 4
Quelque Domaines d’application
Navigation d'un l'Internet (HTTP).
Messagerie électronique (SMTP et POP).
Conception de nouveaux protocoles.
Sécurité des communications (Cryptage des messages, authentification, …).
Mise en place des services Internet et interfaces GUI clients.
Recherche des hôtesses et adressage (DNS).
Transfert de fichiers (FTP).
Déploiement à distance des applications multiple systèmes (RMI).
…
I
N
T
R
O
D
U
C
T
I
O
N
13 janvier 2016 Programmation Réseau en JAVA 5
Bref historique de JavaLes principaux événements de la vie de Java sont les suivants :
Année Événements
1995 mai : premier lancement commercial
1996 janvier : JDK 1.0
1996 septembre : lancement du JDC
1997 février : JDK 1.1
1998 décembre : lancement de J2SE et du JCP
1999 décembre : lancement J2EE
2000 mai : J2SE 1.3
2002 J2SE 1.4
2004 J2SE 1.5
2006 J2SE 1.6
L
A
N
G
A
G
E
J
A
V
A
13 janvier 2016 Programmation Réseau en JAVA 6
Les caractéristiques de JAVAJAVA est:
Familier,
Orienté objet,
Client / Serveur;
Multithreadé,
Interprété.
JAVA à une:
Architecture neutre,
Portable,
Dynamiquement adaptable.
Les applications JAVA sont:
Sécurisées,
Performantes,
Robustes,
Plateformes multiples,
Réseaux hétérogènes, distribués.
LANGAGE
JAVA
13 janvier 2016 Programmation Réseau en JAVA 7
L’ API du JAVA
JAVA inclut un grand nombre de librairies de classes utiles et de méthodes, très brièvement, ces librairies sont :
java.lang : Classes de base du langage.
java.io : Gestion les flux (Entrées/Sorties).
java.net : Fonctionnalités réseaux (programmation réseaux).
Java.util : Utilitaires divers.
java.awt : Jeux d’outils pour les interfaces graphiques (GUI).
Java.Applet: Développement des applets.
Java.RMI : Développement d'objets distribués.
Java.Swing : Développement des interfaces graphiques.
java.sql : JDBC pour l'accès aux bases de données.
Java.Security : Gestion des signatures et des certifications.
java.JavaBean : Développer des composants réutilisables.
LANGAGE
JAVA
13 janvier 2016 Programmation Réseau en JAVA 8
Comparaison du JAVALANGAGE
JAVA
13 janvier 2016 Programmation Réseau en JAVA 9
Architecture Client - Serveur C’est une communication entre deux machines
L’un de ces machine offre des services (Serveur).
L’autre machine consomme ces services (Client).
Le client lance une requête pour l’acquisition d’une
ressource (Texte, Image, Son, …).
Le serveur exécute la requête (lancement des scripts,
interaction avec BDD, …).
Le résultat de la requête (réponse) est envoyé au client.
R
E
S
E
A
U
X
13 janvier 2016 Programmation Réseau en JAVA 10
Le protocole TCP-IP
HTTP
FTP
Telnet
SMTP
NFS
SNMP
DNS
RIP
TCP
UDP
IP
Token Ring
Ethernet
FDDI
Application
Transport
Réseau
Liaison
TCP-IP et hiérarchie de ces protocoles
HTTP (Hypertext Transfer Protocol) FTP (File Transfer Protocol)
SMTP (Simple Mail Transfer Protocol) NFS (Network File System)
RIP (Routing Information Protocol) DNS (Domain Name System)
SNMP (Simple Network Management Protocol)
IP (Internet Protocol) FDDI (Fiber Distributed Data Interface)
RESEAUX
13 janvier 2016 Programmation Réseau en JAVA 11
TCP-IP et java.net
Les classes et interfaces utiles au développement
réseau sont regroupées dans le package java.net.
Dans le cadre de ce mini projet; 10 classes ont été
choisies.
Les couche programmable du TCP-IP sont:
Application, Transport et Réseau.
URL, URLConnection, URLEncoder
Socket, ServerSocket
InetAdress, NetworkInterfaces
Application
Transport
(TCP/UDP)
Réseau (IP)
DatagramSocket,
DatagramPacket,
MulticastSocket
RESEAUX
13 janvier 2016 Programmation Réseau en JAVA 12
Notion de Socket et de Port
Communication
par Sockets
Socket Un modèle de communication basé sur TCP ou UDP.
Dans une communication; au moins 2 sockets sont utilisées.
Chaque socket est identifiée par une adresse IP et un numéro de port.
Port La liaison d’une machine à un réseau est physique.
Les données passent par cette liaison sont utilisées par diverses
applications (ou protocoles).
Les ports sont fondus pour distinguer les données propriétaire à chaque
processus (plusieurs communications TCP et/ou UDP en parallèle).
Quelque numéros de port sont réservés (Well Known Ports).
RESEAUX
13 janvier 2016 Programmation Réseau en JAVA 13
TCP
Communication garantie.
Ordre de la livraison des paquets est prise en compte.
Pas de perte ou de duplication des paquets.
Communication fiable (moins performante).
Utile pour l’implantation des services réseaux tel que
l’accès à distance (telnet, rlogin) et le transfert des
fichiers (ftp) où un grand flux de donnés est échangé.
RESEAUX
13 janvier 2016 Programmation Réseau en JAVA 14
UDP
Communication non garantie.
Ordre de la livraison des paquets n'est pas important
et non garantie.
Possibilité de perte ou de duplication des paquets.
Communication très rapide (bonnes performances).
UDP est réservé à des taches peu importantes.
UDP est utilisé dans plusieurs applications (eMule,
Kaza, iMesh...).
RESEAUX
13 janvier 2016 Programmation Réseau en JAVA 15
Mode connecté en non connecté
Émetteur Récepteur
Mot 2 Mot 1Mot 3 Mot 2 Mot 1Mot 3
3 12 3 21
Émetteur Récepteur
X
1
Appel téléphonique
(Support de transmission : l’opérateur téléphonique)
Courriers postaux
(Support de transmission : Service portal)
RESEAUX
13 janvier 2016 Programmation Réseau en JAVA 16
La diffusion
Envoyer des paquets à plusieurs machines sans
faire la duplication de ces paquets.
L’adresse IP doit être type classe D, c-à-d entre
224.0.0.1 et 239.255.255.255
(Tous ces adresse sont déjà occupées !!).
Utilisation du champ TTL (Time To Live)
pour contrôler le chemin du paquet:
1 = Réseau local.
16 = Région.
127 = Monde entier.
RESEAUX
13 janvier 2016 Programmation Réseau en JAVA 17
La diffusion
PC 1 diffuse des informations au autres PC
RESEAUX
13 janvier 2016 Programmation Réseau en JAVA 18
Les URLs
Une URL (Uniform Source Locator) est une
chaîne de caractères qui désigne une
ressource accessible par Internet ou Intranet.
Une URL est composée en générale d’un
protocole, un serveur, un port, chemin
d’accès et un ensemble de paramètres.
RESEAUX
13 janvier 2016 Programmation Réseau en JAVA 19
Exemples d’URLs
http://<serveur>:<port>/<chemin>?<param1>&<param2>&...&<paramn>
http://www.google.com/convert?value=100&src=miles&dist=kilometers
ftp://<user>:<motdepasse>@<serveur>:<port>/<chemin>
ftp://benbac:2007dz47@free.fr/siteperso
mailto:<email>
mailto:benbac20@gmail.com
file://<serveur>/<chemin> file:///C:/My%20documents/Mes%20images/logo.jpg
RESEAUX
13 janvier 2016 Programmation Réseau en JAVA 20
IV – Adressage et Internet
(Couche Réseau)
Chaque machine du réseau Internet à une adresse unique, cette adresse (appelée adresse IP ) est codée sur 4
octets séparés par des points.
192 168 0 15
Adresse du réseau
(poids fort)
Adresse du machine sur
le réseau (poids faible)
Pour faciliter la compréhension humaine, un serveur particulier appelé DNS (Domaine Name Service) est capable d'associer un nom à une adresse IP.
ADRESSA
G
E
13 janvier 2016 Programmation Réseau en JAVA 21
Méthode Rôle
InetAddress
getByName(String)
Renvoie l'adresse Internet associée au
nom d'hôte passé en paramètre.
InetAddress[]
getAllByName(String)
Renvoie un tableau des adresses
Internet associées au nom d'hôte.
InetAddress getLocalHost() Renvoie l’IP de la machine locale.
byte[] getAddress() Renvoie les 4 octets de l'adresse IP.
String getHostAddress() Renvoie L’IP sous la forme d'une chaîne.
String getHostName() Renvoie le nom du serveur.
Cette classe offre des méthodes de manipulation des adresses Internet,
elle est constituée
D’un objet de la classe InetAddress représente l’adresse Internet.
Des méthodes pour lire l’adresse, la comparer avec
d’ autre ou la convertir en chaîne de caractères.
A - La classe InetAddress
ADRESSA
G
E
13 janvier 2016 Programmation Réseau en JAVA 22
Les interfaces de connexions aux réseaux
La nouvelle classe NetworkInterface (J2SE 1.4)
permet d'obtenir la liste des interfaces de connexion
aux réseaux de la machine.
Une interface de connexion
au réseau se caractérise par :
Un nom court,
Une désignation,
Une liste d'adresses IP.
ADRESSAGE
13 janvier 2016 Programmation Réseau en JAVA 23
B - La Classe NetworkInterface
Méthode Description
String getName() Renvoie le nom court de l'interface
String
getDisplayName()Renvoie la désignation de l'interface
Enumeration
getInetAddresses()
Renvoie une énumération d'objetInetAddress contenant la liste
des adresses IP associée à
l'interface
Les méthode utilisées dans cette classe sont:ADRESSAGE
13 janvier 2016 Programmation Réseau en JAVA 24
V - Communication par Sockets
(Couche Transport)Les sockets représentent l’outil de base pour la conception
des protocoles et le développement des applications de communication tel que la messagerie, transmission des fichiers, vidéoconférence,….etc. deux protocoles sont utilisés:
1. Le protocole TCP
a. ServerSocket
b. Socket
2. Le protocole UDP
a. DatagramSocket
b. DatagramPacket
c. MulticastSocket
S
O
C
K
E
T
S
13 janvier 2016 Programmation Réseau en JAVA 25
1- Communication en mode Connecté(TCP)
La classe SocketServer
Elle est utilisée au coté serveur.
Elle attend simplement les appels des clients.
Chaque objet est associé à un port sur lequel il va attendre les connexions.
Pour chaque client, un thread est lancé pour assurer le dialogue avec lui.
La classe Socket
La classe contient les méthodes de création des flux d'entrée-sortie.
Les sockets constituent la base des communications sur le réseau.
La classe gère la connexion, l'envoi de données, la réception de données
et la déconnexion.
SOCKETS
13 janvier 2016 Programmation Réseau en JAVA 26
A - La classe ServerSocket
Constructeur Rôle
ServerSocket() Constructeur par défaut.
ServerSocket
(int)
Créer une Socket sur le port fourni en
paramètre.
ServerSocket
(int, int)
Créer une Socket sur le port avec la taille
maximale de la file fourni en paramètre.
La classe possède plusieurs constructeurs dont les principaux sont :
Méthode Rôle
Socket accept() Attendre une nouvelle connexion
void close() Fermer la socket
La classe SocketServer possède plusieurs méthodes :
SOCKETS
13 janvier 2016 Programmation Réseau en JAVA 27
Constructeur Rôle
Server() Constructeur par défaut.
ServerSocket
(String, int)
Créer une socket sur la machine dont le nom
et le port sont fournis en paramètre.
ServerSocket
(InetAddress, int)
Créer une socket sur la machine dont
l'adresse et le port sont fournis en paramètre.
Méthode Rôle
InetAddress
getInetAddress()
Renvoie l'adresse IP distant.
void close() Fermer la socket.
InputStream
getInputStream()
Renvoie un flux en entrée pour recevoir
les données de la socket.
OutputStream
getOutputStream()
Renvoie un flux en sortie pour émettre
les données de la socket.
B - La classe Socket
SOCKETS
13 janvier 2016 Programmation Réseau en JAVA 28
Mécanisme de communication entre le Client et le Serveur par TCP
SOCKETS
13 janvier 2016 Programmation Réseau en JAVA 29
2 - Communication en mode
non connecté (UDP)
La classe DatagramSocket Émission et réception des paquets à l’aide des méthodes
Send() et Recieve().
La classe DatagramPacket Émission et la réception des données d’un paquet à l’aide d’un
tableau d’octets à l’aide de getData()et sendData().
La classe MulticastSocket Diffusion des paquets sur un réseau.
SOCKETS
13 janvier 2016 Programmation Réseau en JAVA 30
A - La classe DatagramSocketConstructeur Rôle
DatagramSocket() Créé une socket attachée à toutes les IP de
la machine et avec un à des ports libres.
DatagramSocket(int) Créé une socket attachée à toutes les IP
avec un port précisé en paramètre.
DatagramSocket
(int, InetAddress)
Créé une socket attachée à une adresse IP
et un port précisé en paramètre.
Méthode Rôle
close() Fermeture de la Socket.
receive(DatagramPacket) Recevoir des données.
send(DatagramPacket) Envoyer des données.
int getPort() Renvoie le port associé à la socket.
SOCKETS
13 janvier 2016 Programmation Réseau en JAVA 31
B - La classe DatagramPacket
Constructeur Rôle
DatagramPacket
(byte tampon[], int length)
Encapsule des paquets en
réception dans un tampon.
DatagramPacket
(byte port[], int length,
InetAddress adresse, int port)
Encapsule des paquets en
émission à destination d'une
machine.
La classe possède plusieurs constructeurs dont les principaux sont :
Méthode Rôle
InetAddress getAddress() Renvoie l'adresse du serveur.
byte[] getData() Renvoie les données du paquet.
int getPort Renvoie le port.
int getLength () Renvoie la taille des données.
setData(byte[]) Mettre à jour les données.
SOCKETS
13 janvier 2016 Programmation Réseau en JAVA 32
Mécanisme de communication entre le Client et le Serveur par UDP
SOCKETS
13 janvier 2016 Programmation Réseau en JAVA 33
C - La classe MulticastSocket
Constructeur Rôle
MulticastSocket() Pour l'envoi des paquets.
MulticastSocket
(int port)
Pour la réception des paquets sur un
port spécifié.
La classe possède plusieurs constructeurs dont les principaux sont :
Méthode Rôle
void joinGroup
(InetAddress mcastaddr)
La jointure avec à un groupe
de diffusion.
leaveGroup
(InetAddress mcastaddr)
Abandonner le groupe de
diffusion.
La classe MulticastSocket possède plusieurs méthodes :
SOCKETS
13 janvier 2016 Programmation Réseau en JAVA 34
VI – Ressources Internet (URL)(Couche Application)
Les classes du Java.net les plus important de la gestion et la manipulation des liens sont:
La classe URL Validation syntaxique des liens.
La classe URLConnection Établir des connexion vers des ressources.
La classe URLEncoder Utilitaire de codification (encodage) des URL.
R
ESSO
U
R
C
E
S
13 janvier 2016 Programmation Réseau en JAVA 35
A - La classe URLLa classe URL possède plusieurs méthodes pour obtenir les
différents éléments qui composent l’URL, parmi ces méthodes:
Si la syntaxe de l’URL n’est pas correcte; une exception de type MalformedURLException est signalée.
Méthode Rôle
getProtocol() Renvoie le protocole utilisé.
getHost() Renvoie le nom du hôte.
getPort() Renvoie le port utilisé.
getFile() Renvoie le chemin complet du fichier.
openConnection() Ouvrir une connexion vers la
ressource.
openStream() Ouvrir un flux de données en entrée
pour lire la ressource.
RESSOURCES
13 janvier 2016 Programmation Réseau en JAVA 36
B - La classe URLConnection
Cette classe établir une connexion vers une ressource
désignée par une URL pour obtenir un flux de données ou
des informations sur cette ressource.
En plus de ça, la classe URLConnection offre des outils
pour la lecture et l’écriture dans les ressources désignées .
Méthode Rôle
getInputStream() Renvoie un flux de données
getContentLength() Renvoie la taille du flux.
RESSOURCES
13 janvier 2016 Programmation Réseau en JAVA 37
C - La classe URLEncoder
Cette classe est une classe utilitaire qui propose la méthode statique encode() pour encoder une
URL.
Elle remplace notamment les espaces par un
signe "+" et les caractères spéciaux par un signe
"%" suivi du code du caractère.
RESSOURCES
13 janvier 2016 Programmation Réseau en JAVA 38
VII-Les exception liées au réseauxLe package java.net définit plusieurs exceptions qui
permettant de gérer les différentes erreurs résultantes de l'exécution des ces classes et méthodes. Parmi ces exceptions:
Exception Description
BindException Port utilisé par une autre application.
ConnectException Aucun serveur n'écoute sur le port précisé.
MalformedURLException L'URL n'est pas valide
NoRouteToHostException Un firewall empêche la connexion
SocketTimeoutException Délai d'attente écoulé.
UnknownHostException L'adresse de l'hôte n'a pas pu être trouvée
E
X
C
E
P
T
I
O
N
S
13 janvier 2016 Programmation Réseau en JAVA 39
Conclusion En voie claire et net la puissance et la souplesse du langage JAVA dans
divers domaines d’application et spécialement l’Internet et les réseaux interconnectées.
JAVA est actuellement prend l'avantage complet de l'Internet en dominant ces principales aspects :
Rechercher et visualisation des informations.
Transmission des données.
Jeux interactifs.
Chat et messagerie.
Commerce électronique.
Actualités.
Diffusion radio et TV.
Conférence en ligne.
…
En future, il semble que JAVA devient la plateforme la plus adéquate de tous type d'applications réseau et spécialement l'Internet.
C
O
N
C
L
I
T
I
O
N
13 janvier 2016 Programmation Réseau en JAVA 40
Bibliographie Emmanuel Remy : Généralités sur java,
http://emmanuel-remy.developpez.com.
Dr.Irène Charon: Java concepts et pratique, 2éme édition 2003.
Dr.Bruce Eckel: Penser en Java, 2éme édition 2000.
Package pédagogique multimédia, 8éme édition, Août 2006.
Jean Michel DOUDOUX : Développons en Java, http://www.jmdoudoux.fr/java/.
CISCO Academy American Network.
Elliotte Rusty Harold : Java Network Programming, 2nd Edition , O‘Reilly.
The Java Tutorials, : Custom Networking http://java.sun.com/docs/books/tutorial.
Gilles ROUSSEL : Programmation réseau avec JAVA.
Comment ça marche, http://commentcamarche.net.
Didier Donsez, Programmation Réseau, Université de Valenciennes.
Boukhalkhal Ahmed et Sahel Naima, Réalisation d’une application d’aide à l’administration sous Windows NT.
B
I
B
L
I
O
G
R
A
P
H
I
E
top related