SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 1
Chapitre 7 : Java et les réseaux
La programmation réseau
Java
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 2
Sommaire
La programmation réseau
Rappel Réseau
Couches réseau et TCP-IP
Notion de Socket
Notion de Port
La classe URL
Les Sockets Java
TCP/IP et les principaux services
La classe InetAdress
Processus de Sockets
Exemple de process serveur
Exemple de process client simple et multi-clients
Datagram- Buffered stream- et Data Stream- sockets
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 3
Rappel couches réseau et TCP/IP
Source Christine Bulfone : Le client/Serveu©r et l’API socket
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 4
Présentation de L’API Socket
Source Christine Bulfone : Le client/Serveu©r et l’API socket
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 5
La notion de « socket »
API (Application Program Interface) socket
Mécanisme d'interface de programmation
permet aux programmes dʼéchanger des données
Les application ne voient les couches de communication quʼà travers
lʼAPI socket (abstraction)
n'implique pas forcément une communication par le réseau
le terme « socket » signifie douille, prise électrique femelle
Une connexion est entièrement définie sur chaque
machine par :
le type de protocole (UDP ou TCP)
l'adresse IP
le numéro de port associé
au processus serveur : port local sur lequel les connexions sont attendues
client : allocation dynamique par le système
Source Christine Bulfone : Le client/Serveu©r et l’API socket
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 6
La notion de « port »
Un service rendu par un programme serveur sur une machine est
accessible par un port
Un port est identifié sur une machine par un nombre entier (16 bits)
de 0 à1023 :
ports réservés assignés par l'IANA (Internet Assigned Numbers Authority)
donnent accès aux services standard :
> 1024
ports utilisateurs disponibles pour placer un service applicatif quelconque
Source Christine Bulfone : Le client/Serveu©r et l’API socket
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 7
java.net
La classe URL
accès à une URL pour le Web
://Hote[:port]/cheminDacces
getFile(), getHost(), getPort(),
getProtocol(), getRef() retournent
les champs de l’URL
Les données référencée par l’URL
peuvent être téléchargée de 3
façons :
par un objet URLConnection créé
par openConnection()
par un objet InputStream créé par
openStream()
par l’appel à getContents() qui
retourne directement le contenu
pour plus de contrôle utiliser la
classe URLConnection
getContent-Length-Type-Encoding...
/** la Classe java.net.URL :
* encaps. Uniform Resource Locator
*/
public final class URL
extends Java.lang.Object
implements serealizable
{ ...
public final Object getContent()
throws IOException;
public URLConnection
openConnection();
throws IOException;
public final InputStream
openStream();
throws IOException;
public String toString();
}
try
URL lt = new URL (“http://...”);
catch (MalformedURLException e) {
//...traitement d’erreur
}
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 8
java.net
Sockets Java
Sockets:
communication peer-ro-peer
possède un nom et une adresse réseau
Les types de sockets :
Datagram sockets
interface pour l’accès UDP (User
Datagram Protocol)
transmissions de paquets
indépendants “sans “ garantie
Stream sockets
interface pour l’accès TCP
(Transmission Control Protocol)
guarantie de transmission...
Raw sockets
interface au protocol IP (Internet
Protocol) ou ICMP (Internet Control
Message Protocol)
tests de nouveaux protocoles ou fcts
évoluées
Utilité des “Datagram sockets”
multicast :
envoi de paquets à un groupe (ex.
NetBios)
Il existe une classe (java 1.1)
MulticastSocket dérivée de
DatagramSocket
broadcast :
envoi de paquets à l’ensemble
des entités d’un réseau
situation de découverte :
découvrir des entités du réseaux,
nouveau service disponible
messagerie non critique :
envoi de messages de contrôle
d’activité non critiques “Je suis en
vie”
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 9
java.net
TCP/IP et les principaux services
Ethernet
Ethernet FDDI
FDDI Token Ring
Token Ring Etc...
Etc...
IP
IP
UDP
UDP TCP
TCP
RPC
RPC
XDR
XDR
NIS
NIS NFS
NFS
X11
X11
FTP
FTP
HTTP
HTTP
SMTP
SMTP
TELNET
TELNET
Etc...
Etc...
Sockets
Application
Présentation
Session
Transport
Réseau
Liaison
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 10
java.net
La classe InetAdress
faire plus que télécharger un objet
référencé par une URL.
écrire un serveur par exemple...
accès à une adresse sur TCP/IP
Net_id.Host_id.Port_ID
206.24.45.100
“java.sun.com”
Cette classe permet de se
connecter à un port d’un Host
Internet et d’écrire/lire des
données des classes java.io.
Pas de constructeur
utilisation de getLocalHost(),
getByName() ou getAllByName()
tests sans le réseau...
//retourn le “localhost”
addr = InetAddress.getByName(null);
/** la Classe InetAdress:
* encapsulation d’une adresse IP
*/
public final class InetAdress
extends Java.lang.Object
{ // Methodes de classes
public static InetAdress
getByName(String host)
throws UnknownHostException;
// ttes les @IP associées à un Host
public static InetAdress []
getAllByName(String host)
throws UnknownHostException;
public static InetAdress
getLocalHost(String host)
throws UnknownHostException;
// Méthodes d’instances
public boolean equals (Object obj);
public byte[] getAdress();
public getHostName();
public hashCode();
public String toString();
}
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 11
Processus de Sockets
Source Christine Bulfone : Le client/Serveu©r et l’API socket
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 12
java.net
Processus de Sockets - 1
creation et initialisation d’une
“Socket” : appel de socket(...)
Socket()
Socket()
Socket()
Socket()
Serveur
Client
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 13
java.net
Processus de Sockets - 2
Établissement d’un service sur un
port de la machine serveur pour
être visible du réseau : bind(...)
Socket()
Socket()
bind()
bind()
Socket()
Socket()
Serveur
Client
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 14
java.net
Processus de Sockets - 3
attente de connexions, le serveur
est prêt : appel de listen(...)
Socket()
Socket()
bind()
bind()
listen()
listen()
Socket()
Socket()
Serveur
Client
un serveur “Datagram sockets”
n’utilise pas de listen() : il n’y a
pas de déroulement de sessions
un serveur “Datagram sockets”
n’utilise pas de listen() : il n’y a
pas de déroulement de sessions
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 15
java.net
Processus de Sockets - 4
Un Client initialise une connexion à
un service : appel de connect()
Socket()
Socket()
bind()
bind()
listen()
listen()
accept()
accept()
Socket()
Socket()
connect()
connect()
Serveur
Client
session
TCP
 Le serveur accepte la connexion
accept() et déclenche un nouveau
processus pour prendre en compte le
client
accept()
accept()
accept()
accept()
session
TCP
création
thread
attente client
suivant
un serveur “Datagram
sockets” n’utilise pas
de accept()
un serveur “Datagram
sockets” n’utilise pas
de accept()
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 16
java.net
Processus de Sockets - 5
le client et le serveur échangent leurs
données : en général par des read() et
write() dans un objet Stream
Socket()
Socket()
bind()
bind()
listen()
listen()
accept()
accept()
accept()
accept()
Socket()
Socket()
connect()
connect()
write()
write()
read()
read()
close()
close()
read()
read()
write()
write()
close()
close()
Serveur
Client
session
TCP
création
thread
attente client
suivant
nbXLab
50
“Datagram sockets” utilise
send() et receive() plutôt que
read() et write()
“Datagram sockets” utilise
send() et receive() plutôt que
read() et write()
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 17
java.net
Processus de Sockets - 6
fermeture du Socket : les sockets sont
des ressources limitées et doivent être
fermées par les deux parties cliente et
serveur
Socket()
Socket()
bind()
bind()
listen()
listen()
accept()
accept()
accept()
accept()
Socket()
Socket()
connect()
connect()
write()
write()
read()
read()
close()
close()
read()
read()
write()
write()
close()
close()
Serveur
Client
session
TCP
création
thread
attente client
suivant
nbXLab
50
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 18
java.net
Exemple de serveur
/** un serveur tres simple qui renvoie ce
* qu’il reçoit : serveur miroir
*/
import java.io.*;
import java.net.*;
public class ServerMiroir {
// Choisir un no de port non entre 1-1024
static final int port = 8080;
public static void main(String[] args ) {
try {
ServerSocket s = new ServerSocket(port);
System.out.println("Serv Started: " + s);
// Blocks until a connection occurs:
Socket socket = s.accept();
System.out.println(
"Connect. accepted, socket: "+ socket);
BufferedReader in =
new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
PrintWriter out =
new PrintWriter(
new OutputStreamWriter(
socket.getOutputStream()));
while (true) {
String str = in.readLine();
if (str.equals("END")) break;
System.out.println
("Echoing: " + str);
out.println(str);
out.flush(); // Ne pas oublier!
}
System.out.println("closing...");
socket.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 19
java.net
Exemple de process serveur
/** un serveur tres simple qui renvoie ce
* qu’il reçoit : serveur miroir
*/
import java.io.*;
import java.net.*;
public class ServerMiroir {
// Choisir un no de port entre 1-1024
static final int port = 8080;
public static void main(String[] args ) {
try {
ServerSocket s = new ServerSocket(port);
System.out.println("Serv Started: " + s);
// Blocks until a connection occurs:
Socket socket = s.accept();
System.out.println(
"socket: "+ socket);
BufferedReader in =
new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
PrintWriter out =
new PrintWriter(
new OutputStreamWriter(
socket.getOutputStream()));
while (true) {
String str = in.readLine();
if (str.equals("END")) break;
System.out.println
("Echoing: " + str);
out.println(str);
out.flush(); // Ne pas oublier!
}
System.out.println("closing...");
socket.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
Pas d’@ IP :
exécuté sur
la machine
courante
Pas d’@ IP :
exécuté sur
la machine
courante
Représente
la connection
Représente
la connection
appel automatique à toString()
socket: [addr=207.0.0.1,
port=1077, localport=8080]
appel automatique à toString()
socket: [addr=207.0.0.1,
port=1077, localport=8080]
sinon le buffer
n’est pas écrit
sur le réseau
tant qu’il n’est
pas plein
sinon le buffer
n’est pas écrit
sur le réseau
tant qu’il n’est
pas plein
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 20
java.net
Exemple de process Client
/** Un client tres simple qui envoie n
* lignes au serveur et lit n ligne
*/
import java.io.*;
import java.net.*;
public class ClientMiroir {
static final int port = 8080;
public static void main(String args[]) {
try {
// Passing null to getByName() produces the
// special "Local Loopback" IP address, for
// testing on one machine w/o a network:
InetAddress addr =
InetAddress.getByName(null);
// On aurait pu utiliser l’adresse ou
// le nom de façon équivalente
// InetAddress.getByName("127.0.0.1");
// InetAddress.getByName("localhost");
System.out.println("addr = " + addr);
Socket socket = new Socket(addr, port);
System.out.println("socket = " + socket);
DataInputStream in =
new DataInputStream(
new BufferedInputStream(
socket.getInputStream()));
PrintStream out =
new PrintStream(
new BufferedOutputStream(
socket.getOutputStream()));
for(int i = 0; i < 10; i ++) {
out.println("howdy " + i);
out.flush(); // Ne pas oublier
String str = in.readLine();
System.out.println(str);
}
out.println("END");
out.flush(); // Ne pas oublier!
socket.close();
} catch(Exception e) {
e.printStackTrace(); }
}
}
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 21
java.net
Gestion de plusieurs clients pour le serveur
import java.io.*; import java.net.*;
class ServerMiroir extends Thread { private
Socket socket;
private BufferedReader in;
private PrintWriter out;
ServerMiroir (Socket s) {
socket = s;
try { in = new BufferedReader( new ...);
out = new PrintWriter( new...);
} catch(IOException e) {...}
start(); // Calls run()
}
public void run() {
try {
while (true) { //lire s = in.readLine}
System.out.println("closing...");
in.close(); out.close();
socket.close();
} catch (IOException e) { ... }
}
}
public class MultiServerMiroir {
static final int port = 8080;
public static void main(String[] args )
{
try {
ServerSocket s = new
ServerSocket(port);
System.out.println("Serv. Started");
while(true) {
// Bloque jusqu’a connexion
Socket socket = s.accept();
new ServerMiroir(socket);
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
© Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 22
java.net
Datagram- Buffered stream- et Data Stream- sockets
fiabilité de la communication
Paramètres typés
performances
Sécurité
Desciptions d’Interface
Non
Non
très bonne
1,8 ms
Oui
Non
Datagram
Oui
Non
bonne
2 ms
Oui
Non
Buf.Stream
Oui
Oui
mauvaise
301 ms
Oui
Non
DataStream
Oui
Oui
bonne
3,2 ms
Oui
Oui
CORBA
Les sockets fournissent un moyen de bas niveau pour
la programmation réseau
La programmation d’une appli. Client/Serveur doit y
plutôt s’appuyer sur CORBA IIOP et Java RMI

Contenu connexe

Similaire à Chap7_JavaNet.pdf

RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdfRAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdfSouf212
 
Socket tcp ip client server on langace c
Socket tcp ip client server on langace c Socket tcp ip client server on langace c
Socket tcp ip client server on langace c mouad Lousimi
 
6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdfAliouDiallo24
 
Chapitre-4-Programmation-réseau-avec-les-sockets.pdf
Chapitre-4-Programmation-réseau-avec-les-sockets.pdfChapitre-4-Programmation-réseau-avec-les-sockets.pdf
Chapitre-4-Programmation-réseau-avec-les-sockets.pdfYoussefJamma
 
Rapport application chat
Rapport application chatRapport application chat
Rapport application chatTbatou sanae
 
173544 introduction-aux-sockets
173544 introduction-aux-sockets173544 introduction-aux-sockets
173544 introduction-aux-socketsnaimanaima1
 
Chapitre 6 - Protocoles TCP/IP, UDP/IP
Chapitre 6  - Protocoles TCP/IP, UDP/IPChapitre 6  - Protocoles TCP/IP, UDP/IP
Chapitre 6 - Protocoles TCP/IP, UDP/IPTarik Zakaria Benmerar
 
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbWebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbHINDGUENDOUZ
 
Appels de procédures distants (RPC)
Appels de procédures distants (RPC)Appels de procédures distants (RPC)
Appels de procédures distants (RPC)Heithem Abbes
 
Programmation réseau en JAVA
Programmation réseau en JAVAProgrammation réseau en JAVA
Programmation réseau en JAVABachir Benyammi
 
Trunk VoiP Asterisk strongsawn openvpn
Trunk VoiP Asterisk strongsawn openvpnTrunk VoiP Asterisk strongsawn openvpn
Trunk VoiP Asterisk strongsawn openvpnYaya N'Tyeni Sanogo
 
Messaging temps réel avec Go
Messaging temps réel avec GoMessaging temps réel avec Go
Messaging temps réel avec GoMickaël Rémond
 
laboratoire formation ccna cisco materiel .ppt
laboratoire formation ccna cisco materiel .pptlaboratoire formation ccna cisco materiel .ppt
laboratoire formation ccna cisco materiel .pptprofsn
 

Similaire à Chap7_JavaNet.pdf (20)

RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdfRAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005.pdf
 
Socket tcp ip client server on langace c
Socket tcp ip client server on langace c Socket tcp ip client server on langace c
Socket tcp ip client server on langace c
 
8-socket.pdf
8-socket.pdf8-socket.pdf
8-socket.pdf
 
6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf
 
02 java-socket
02 java-socket02 java-socket
02 java-socket
 
Chapitre-4-Programmation-réseau-avec-les-sockets.pdf
Chapitre-4-Programmation-réseau-avec-les-sockets.pdfChapitre-4-Programmation-réseau-avec-les-sockets.pdf
Chapitre-4-Programmation-réseau-avec-les-sockets.pdf
 
Rapport application chat
Rapport application chatRapport application chat
Rapport application chat
 
spring.pdf
spring.pdfspring.pdf
spring.pdf
 
Introduction aux-sockets
Introduction aux-socketsIntroduction aux-sockets
Introduction aux-sockets
 
173544 introduction-aux-sockets
173544 introduction-aux-sockets173544 introduction-aux-sockets
173544 introduction-aux-sockets
 
Chapitre 6 - Protocoles TCP/IP, UDP/IP
Chapitre 6  - Protocoles TCP/IP, UDP/IPChapitre 6  - Protocoles TCP/IP, UDP/IP
Chapitre 6 - Protocoles TCP/IP, UDP/IP
 
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbWebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 
APACHE TOMCAT
APACHE TOMCATAPACHE TOMCAT
APACHE TOMCAT
 
Appels de procédures distants (RPC)
Appels de procédures distants (RPC)Appels de procédures distants (RPC)
Appels de procédures distants (RPC)
 
Programmation réseau en JAVA
Programmation réseau en JAVAProgrammation réseau en JAVA
Programmation réseau en JAVA
 
Apache Open SSL
Apache Open SSLApache Open SSL
Apache Open SSL
 
Trunk VoiP Asterisk strongsawn openvpn
Trunk VoiP Asterisk strongsawn openvpnTrunk VoiP Asterisk strongsawn openvpn
Trunk VoiP Asterisk strongsawn openvpn
 
Messaging temps réel avec Go
Messaging temps réel avec GoMessaging temps réel avec Go
Messaging temps réel avec Go
 
JavaRMI.pdf
JavaRMI.pdfJavaRMI.pdf
JavaRMI.pdf
 
laboratoire formation ccna cisco materiel .ppt
laboratoire formation ccna cisco materiel .pptlaboratoire formation ccna cisco materiel .ppt
laboratoire formation ccna cisco materiel .ppt
 

Plus de Patiento Del Mar

Plus de Patiento Del Mar (20)

grpc_tutorial.pdf
grpc_tutorial.pdfgrpc_tutorial.pdf
grpc_tutorial.pdf
 
0.coursGitEclipse.pdf
0.coursGitEclipse.pdf0.coursGitEclipse.pdf
0.coursGitEclipse.pdf
 
Primefaces.ppt
Primefaces.pptPrimefaces.ppt
Primefaces.ppt
 
hibernateormoverview-140501154227-phpapp02.pdf
hibernateormoverview-140501154227-phpapp02.pdfhibernateormoverview-140501154227-phpapp02.pdf
hibernateormoverview-140501154227-phpapp02.pdf
 
hibernateormfeatures-140223193044-phpapp02.pdf
hibernateormfeatures-140223193044-phpapp02.pdfhibernateormfeatures-140223193044-phpapp02.pdf
hibernateormfeatures-140223193044-phpapp02.pdf
 
Spring Data Advanced Querying.ppt
Spring Data Advanced Querying.pptSpring Data Advanced Querying.ppt
Spring Data Advanced Querying.ppt
 
Thymeleaf and Spring Controllers.ppt
Thymeleaf and Spring Controllers.pptThymeleaf and Spring Controllers.ppt
Thymeleaf and Spring Controllers.ppt
 
Spring Security.ppt
Spring Security.pptSpring Security.ppt
Spring Security.ppt
 
momjms.pdf
momjms.pdfmomjms.pdf
momjms.pdf
 
rmi.pdf
rmi.pdfrmi.pdf
rmi.pdf
 
synchronization.pdf
synchronization.pdfsynchronization.pdf
synchronization.pdf
 
cours6.pdf
cours6.pdfcours6.pdf
cours6.pdf
 
java_PAR.pdf
java_PAR.pdfjava_PAR.pdf
java_PAR.pdf
 
11-Concurrence-Section critiques.pdf
11-Concurrence-Section critiques.pdf11-Concurrence-Section critiques.pdf
11-Concurrence-Section critiques.pdf
 
22-reflection.pdf
22-reflection.pdf22-reflection.pdf
22-reflection.pdf
 
16-Concurrence-APIs-Concurrentes.pdf
16-Concurrence-APIs-Concurrentes.pdf16-Concurrence-APIs-Concurrentes.pdf
16-Concurrence-APIs-Concurrentes.pdf
 
12-Concurrence-Rendez-vous.pdf
12-Concurrence-Rendez-vous.pdf12-Concurrence-Rendez-vous.pdf
12-Concurrence-Rendez-vous.pdf
 
17-Concurrence-Fork-Join.pdf
17-Concurrence-Fork-Join.pdf17-Concurrence-Fork-Join.pdf
17-Concurrence-Fork-Join.pdf
 
13-Concurrence-Producteur-consommateur.pdf
13-Concurrence-Producteur-consommateur.pdf13-Concurrence-Producteur-consommateur.pdf
13-Concurrence-Producteur-consommateur.pdf
 
15-Concurrence-Operations-Atomiques.pdf
15-Concurrence-Operations-Atomiques.pdf15-Concurrence-Operations-Atomiques.pdf
15-Concurrence-Operations-Atomiques.pdf
 

Dernier

JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)Sana REFAI
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfInstitut de l'Elevage - Idele
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).FatimaEzzahra753100
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...Institut de l'Elevage - Idele
 

Dernier (9)

JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdf
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptx
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).
 
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdfJTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
 

Chap7_JavaNet.pdf

  • 1. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 1 Chapitre 7 : Java et les réseaux La programmation réseau Java
  • 2. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 2 Sommaire La programmation réseau Rappel Réseau Couches réseau et TCP-IP Notion de Socket Notion de Port La classe URL Les Sockets Java TCP/IP et les principaux services La classe InetAdress Processus de Sockets Exemple de process serveur Exemple de process client simple et multi-clients Datagram- Buffered stream- et Data Stream- sockets
  • 3. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 3 Rappel couches réseau et TCP/IP Source Christine Bulfone : Le client/Serveu©r et l’API socket
  • 4. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 4 Présentation de L’API Socket Source Christine Bulfone : Le client/Serveu©r et l’API socket
  • 5. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 5 La notion de « socket » API (Application Program Interface) socket Mécanisme d'interface de programmation permet aux programmes dʼéchanger des données Les application ne voient les couches de communication quʼà travers lʼAPI socket (abstraction) n'implique pas forcément une communication par le réseau le terme « socket » signifie douille, prise électrique femelle Une connexion est entièrement définie sur chaque machine par : le type de protocole (UDP ou TCP) l'adresse IP le numéro de port associé au processus serveur : port local sur lequel les connexions sont attendues client : allocation dynamique par le système Source Christine Bulfone : Le client/Serveu©r et l’API socket
  • 6. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 6 La notion de « port » Un service rendu par un programme serveur sur une machine est accessible par un port Un port est identifié sur une machine par un nombre entier (16 bits) de 0 à1023 : ports réservés assignés par l'IANA (Internet Assigned Numbers Authority) donnent accès aux services standard : > 1024 ports utilisateurs disponibles pour placer un service applicatif quelconque Source Christine Bulfone : Le client/Serveu©r et l’API socket
  • 7. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 7 java.net La classe URL accès à une URL pour le Web ://Hote[:port]/cheminDacces getFile(), getHost(), getPort(), getProtocol(), getRef() retournent les champs de l’URL Les données référencée par l’URL peuvent être téléchargée de 3 façons : par un objet URLConnection créé par openConnection() par un objet InputStream créé par openStream() par l’appel à getContents() qui retourne directement le contenu pour plus de contrôle utiliser la classe URLConnection getContent-Length-Type-Encoding... /** la Classe java.net.URL : * encaps. Uniform Resource Locator */ public final class URL extends Java.lang.Object implements serealizable { ... public final Object getContent() throws IOException; public URLConnection openConnection(); throws IOException; public final InputStream openStream(); throws IOException; public String toString(); } try URL lt = new URL (“http://...”); catch (MalformedURLException e) { //...traitement d’erreur }
  • 8. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 8 java.net Sockets Java Sockets: communication peer-ro-peer possède un nom et une adresse réseau Les types de sockets : Datagram sockets interface pour l’accès UDP (User Datagram Protocol) transmissions de paquets indépendants “sans “ garantie Stream sockets interface pour l’accès TCP (Transmission Control Protocol) guarantie de transmission... Raw sockets interface au protocol IP (Internet Protocol) ou ICMP (Internet Control Message Protocol) tests de nouveaux protocoles ou fcts évoluées Utilité des “Datagram sockets” multicast : envoi de paquets à un groupe (ex. NetBios) Il existe une classe (java 1.1) MulticastSocket dérivée de DatagramSocket broadcast : envoi de paquets à l’ensemble des entités d’un réseau situation de découverte : découvrir des entités du réseaux, nouveau service disponible messagerie non critique : envoi de messages de contrôle d’activité non critiques “Je suis en vie”
  • 9. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 9 java.net TCP/IP et les principaux services Ethernet Ethernet FDDI FDDI Token Ring Token Ring Etc... Etc... IP IP UDP UDP TCP TCP RPC RPC XDR XDR NIS NIS NFS NFS X11 X11 FTP FTP HTTP HTTP SMTP SMTP TELNET TELNET Etc... Etc... Sockets Application Présentation Session Transport Réseau Liaison
  • 10. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 10 java.net La classe InetAdress faire plus que télécharger un objet référencé par une URL. écrire un serveur par exemple... accès à une adresse sur TCP/IP Net_id.Host_id.Port_ID 206.24.45.100 “java.sun.com” Cette classe permet de se connecter à un port d’un Host Internet et d’écrire/lire des données des classes java.io. Pas de constructeur utilisation de getLocalHost(), getByName() ou getAllByName() tests sans le réseau... //retourn le “localhost” addr = InetAddress.getByName(null); /** la Classe InetAdress: * encapsulation d’une adresse IP */ public final class InetAdress extends Java.lang.Object { // Methodes de classes public static InetAdress getByName(String host) throws UnknownHostException; // ttes les @IP associées à un Host public static InetAdress [] getAllByName(String host) throws UnknownHostException; public static InetAdress getLocalHost(String host) throws UnknownHostException; // Méthodes d’instances public boolean equals (Object obj); public byte[] getAdress(); public getHostName(); public hashCode(); public String toString(); }
  • 11. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 11 Processus de Sockets Source Christine Bulfone : Le client/Serveu©r et l’API socket
  • 12. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 12 java.net Processus de Sockets - 1 creation et initialisation d’une “Socket” : appel de socket(...) Socket() Socket() Socket() Socket() Serveur Client
  • 13. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 13 java.net Processus de Sockets - 2 Établissement d’un service sur un port de la machine serveur pour être visible du réseau : bind(...) Socket() Socket() bind() bind() Socket() Socket() Serveur Client
  • 14. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 14 java.net Processus de Sockets - 3 attente de connexions, le serveur est prêt : appel de listen(...) Socket() Socket() bind() bind() listen() listen() Socket() Socket() Serveur Client un serveur “Datagram sockets” n’utilise pas de listen() : il n’y a pas de déroulement de sessions un serveur “Datagram sockets” n’utilise pas de listen() : il n’y a pas de déroulement de sessions
  • 15. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 15 java.net Processus de Sockets - 4 Un Client initialise une connexion à un service : appel de connect() Socket() Socket() bind() bind() listen() listen() accept() accept() Socket() Socket() connect() connect() Serveur Client session TCP  Le serveur accepte la connexion accept() et déclenche un nouveau processus pour prendre en compte le client accept() accept() accept() accept() session TCP création thread attente client suivant un serveur “Datagram sockets” n’utilise pas de accept() un serveur “Datagram sockets” n’utilise pas de accept()
  • 16. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 16 java.net Processus de Sockets - 5 le client et le serveur échangent leurs données : en général par des read() et write() dans un objet Stream Socket() Socket() bind() bind() listen() listen() accept() accept() accept() accept() Socket() Socket() connect() connect() write() write() read() read() close() close() read() read() write() write() close() close() Serveur Client session TCP création thread attente client suivant nbXLab 50 “Datagram sockets” utilise send() et receive() plutôt que read() et write() “Datagram sockets” utilise send() et receive() plutôt que read() et write()
  • 17. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 17 java.net Processus de Sockets - 6 fermeture du Socket : les sockets sont des ressources limitées et doivent être fermées par les deux parties cliente et serveur Socket() Socket() bind() bind() listen() listen() accept() accept() accept() accept() Socket() Socket() connect() connect() write() write() read() read() close() close() read() read() write() write() close() close() Serveur Client session TCP création thread attente client suivant nbXLab 50
  • 18. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 18 java.net Exemple de serveur /** un serveur tres simple qui renvoie ce * qu’il reçoit : serveur miroir */ import java.io.*; import java.net.*; public class ServerMiroir { // Choisir un no de port non entre 1-1024 static final int port = 8080; public static void main(String[] args ) { try { ServerSocket s = new ServerSocket(port); System.out.println("Serv Started: " + s); // Blocks until a connection occurs: Socket socket = s.accept(); System.out.println( "Connect. accepted, socket: "+ socket); BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream())); PrintWriter out = new PrintWriter( new OutputStreamWriter( socket.getOutputStream())); while (true) { String str = in.readLine(); if (str.equals("END")) break; System.out.println ("Echoing: " + str); out.println(str); out.flush(); // Ne pas oublier! } System.out.println("closing..."); socket.close(); } catch(Exception e) { e.printStackTrace(); } } }
  • 19. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 19 java.net Exemple de process serveur /** un serveur tres simple qui renvoie ce * qu’il reçoit : serveur miroir */ import java.io.*; import java.net.*; public class ServerMiroir { // Choisir un no de port entre 1-1024 static final int port = 8080; public static void main(String[] args ) { try { ServerSocket s = new ServerSocket(port); System.out.println("Serv Started: " + s); // Blocks until a connection occurs: Socket socket = s.accept(); System.out.println( "socket: "+ socket); BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream())); PrintWriter out = new PrintWriter( new OutputStreamWriter( socket.getOutputStream())); while (true) { String str = in.readLine(); if (str.equals("END")) break; System.out.println ("Echoing: " + str); out.println(str); out.flush(); // Ne pas oublier! } System.out.println("closing..."); socket.close(); } catch(Exception e) { e.printStackTrace(); } } } Pas d’@ IP : exécuté sur la machine courante Pas d’@ IP : exécuté sur la machine courante Représente la connection Représente la connection appel automatique à toString() socket: [addr=207.0.0.1, port=1077, localport=8080] appel automatique à toString() socket: [addr=207.0.0.1, port=1077, localport=8080] sinon le buffer n’est pas écrit sur le réseau tant qu’il n’est pas plein sinon le buffer n’est pas écrit sur le réseau tant qu’il n’est pas plein
  • 20. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 20 java.net Exemple de process Client /** Un client tres simple qui envoie n * lignes au serveur et lit n ligne */ import java.io.*; import java.net.*; public class ClientMiroir { static final int port = 8080; public static void main(String args[]) { try { // Passing null to getByName() produces the // special "Local Loopback" IP address, for // testing on one machine w/o a network: InetAddress addr = InetAddress.getByName(null); // On aurait pu utiliser l’adresse ou // le nom de façon équivalente // InetAddress.getByName("127.0.0.1"); // InetAddress.getByName("localhost"); System.out.println("addr = " + addr); Socket socket = new Socket(addr, port); System.out.println("socket = " + socket); DataInputStream in = new DataInputStream( new BufferedInputStream( socket.getInputStream())); PrintStream out = new PrintStream( new BufferedOutputStream( socket.getOutputStream())); for(int i = 0; i < 10; i ++) { out.println("howdy " + i); out.flush(); // Ne pas oublier String str = in.readLine(); System.out.println(str); } out.println("END"); out.flush(); // Ne pas oublier! socket.close(); } catch(Exception e) { e.printStackTrace(); } } }
  • 21. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 21 java.net Gestion de plusieurs clients pour le serveur import java.io.*; import java.net.*; class ServerMiroir extends Thread { private Socket socket; private BufferedReader in; private PrintWriter out; ServerMiroir (Socket s) { socket = s; try { in = new BufferedReader( new ...); out = new PrintWriter( new...); } catch(IOException e) {...} start(); // Calls run() } public void run() { try { while (true) { //lire s = in.readLine} System.out.println("closing..."); in.close(); out.close(); socket.close(); } catch (IOException e) { ... } } } public class MultiServerMiroir { static final int port = 8080; public static void main(String[] args ) { try { ServerSocket s = new ServerSocket(port); System.out.println("Serv. Started"); while(true) { // Bloque jusqu’a connexion Socket socket = s.accept(); new ServerMiroir(socket); } } catch(Exception e) { e.printStackTrace(); } } }
  • 22. © Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 22 java.net Datagram- Buffered stream- et Data Stream- sockets fiabilité de la communication Paramètres typés performances Sécurité Desciptions d’Interface Non Non très bonne 1,8 ms Oui Non Datagram Oui Non bonne 2 ms Oui Non Buf.Stream Oui Oui mauvaise 301 ms Oui Non DataStream Oui Oui bonne 3,2 ms Oui Oui CORBA Les sockets fournissent un moyen de bas niveau pour la programmation réseau La programmation d’une appli. Client/Serveur doit y plutôt s’appuyer sur CORBA IIOP et Java RMI