41
Dirigé par : M. BOUKHELKHAL Ahmed Travail Réalisé par : BENYAMMI Bachir HASSANI Mustapha OULD BAHAMMOU Abdelaziz Niveau : 4 eme 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

Programmation réseau en JAVA

Embed Size (px)

Citation preview

Page 1: Programmation réseau en JAVA

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

Page 2: Programmation réseau en JAVA

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

Page 3: Programmation réseau en JAVA

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

Page 4: Programmation réseau en JAVA

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

Page 5: Programmation réseau en JAVA

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

Page 6: Programmation réseau en JAVA

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

Page 7: Programmation réseau en 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

Page 8: Programmation réseau en JAVA

13 janvier 2016 Programmation Réseau en JAVA 8

Comparaison du JAVALANGAGE

JAVA

Page 9: Programmation réseau en 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

Page 10: Programmation réseau en JAVA

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

Page 11: Programmation réseau en JAVA

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

Page 12: Programmation réseau en JAVA

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

Page 13: Programmation réseau en JAVA

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

Page 14: Programmation réseau en JAVA

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

Page 15: Programmation réseau en JAVA

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

Page 16: Programmation réseau en JAVA

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

Page 17: Programmation réseau en JAVA

13 janvier 2016 Programmation Réseau en JAVA 17

La diffusion

PC 1 diffuse des informations au autres PC

RESEAUX

Page 18: Programmation réseau en JAVA

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

Page 19: Programmation réseau en JAVA

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:[email protected]/siteperso

mailto:<email>

mailto:[email protected]

file://<serveur>/<chemin> file:///C:/My%20documents/Mes%20images/logo.jpg

RESEAUX

Page 20: Programmation réseau en JAVA

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

Page 21: Programmation réseau en JAVA

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

Page 22: Programmation réseau en JAVA

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

Page 23: Programmation réseau en JAVA

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

Page 24: Programmation réseau en JAVA

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

Page 25: Programmation réseau en JAVA

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

Page 26: Programmation réseau en JAVA

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

Page 27: Programmation réseau en JAVA

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

Page 28: Programmation réseau en JAVA

13 janvier 2016 Programmation Réseau en JAVA 28

Mécanisme de communication entre le Client et le Serveur par TCP

SOCKETS

Page 29: Programmation réseau en JAVA

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

Page 30: Programmation réseau en JAVA

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

Page 31: Programmation réseau en JAVA

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

Page 32: Programmation réseau en JAVA

13 janvier 2016 Programmation Réseau en JAVA 32

Mécanisme de communication entre le Client et le Serveur par UDP

SOCKETS

Page 33: Programmation réseau en JAVA

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

Page 34: Programmation réseau en JAVA

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

Page 35: Programmation réseau en JAVA

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

Page 36: Programmation réseau en JAVA

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

Page 37: Programmation réseau en JAVA

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

Page 38: Programmation réseau en JAVA

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

Page 39: Programmation réseau en JAVA

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

Page 40: Programmation réseau en JAVA

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

Page 41: Programmation réseau en JAVA