SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
Université de Lille1

Les sockets java
N. Melab
melab@lifl.fr
Sockets

DESS-ISIDIS

Plan
n
n
n

Le modèle
Sockets java
Sockets C-UNIX BSD 4.X
Le modèle
n

n
n
n

Sockets : interface (point de communication)
client/serveur utilisée à l’origine dans le monde
UNIX et TCP/IP
Etendue aux PCs (Winsock) et mainframes
Primitives pour le support de communications
reposant sur les protocoles (TCP/IP, UDP/IP)
Les applications client/serveur ne voient les
couches de communication qu’à travers l’API
socket (abstraction)

Sockets

DESS-ISIDIS

Sockets/OSI
Application cliente

Protocole Applicatif

Application serveur

API Socket

UDP

API Socket

TCP

UDP

TCP

IP

IP

Physique

Physique
Rôle des sockets
n
n
n
n
n
n

Connexion à une machine distante
Envoi/Réception de données
Fermeture d’une connexion
Attachement à un port
Acceptation d’une demande de connexion à un
port local
Attente de demandes de connexion

Sockets

DESS-ISIDIS

Notion de port
n

Connexion réseau
* Adresse

internet de la machine
* Numéro du port
n

Pourquoi les ports ?
* Sur

une même machine, plusieurs services sont
accessibles simultanément (web, email, etc.)
* Points d’accès : ports logiques (65535)
* Rien à avoir avec les ports physiques (série et
parallèle)
Désignation des ports
n
n

n

Port : numéro allant de 1 à 65535
Les ports 1 à 1023 sont réservés aux services
courants : finger, ftp, http (80), SMTP (25),
etc.
Fichier d’assignation de ports : /etc/services

Sockets

DESS-ISIDIS

Adresse internet
n

Connexion réseau
* Adresse

internet de la machine
* Numéro : 193.49.192.193
n

Désignation par des noms symboliques
* Association

de noms symboliques aux adresses
numériques
* Domain Name System (ou DNS)
* Exemple : lil.univ-littoral.fr : 193.49.192.193
Sockets java

Sockets

DESS-ISIDIS

Gestion des ports (adresses) en Java
n

Classe InetAdress
*
*

Dans java.net
Champs
ó hostName
ó address

(exemple : lil.univ-littoral.fr)

(32 bits, exemple : 193.49.192.193)

Pas de constructeur
* 3 méthodes statiques
*

ó public

static InetAddress InetAddress .getByName(String hote)
static InetAddress[] InetAddress .getAllByName(String hote)
ó public static InetAddress InetAddress .getLocalHost()
ó public

n

Classes Socket, SocketServer et SocketImpl
* getInetAddress()
Gestion des sockets
n

Taxinomie
* Sockets
ó Point

à point : Socket, SocketServer, SocketImlp

* Sockets
ó Point

TCP
UDP

à point : DatagramSocket
MultiCastSocket

ó Multi-point :

* Dans

java.net

Sockets

DESS-ISIDIS

Sockets TCP
n

Classe Socket
ò
ò
ò

n

Connexion à une machine distante
Envoi/Réception de données
Fermeture d’une connexion

Classe SocketServer
ò
ò
ò

Attachement à un port
Acceptation d’une demande de connexion à un port
local
Attente de demandes de connexion
Classe Socket (1)
n

Constructeurs
ò
ò
ò
ò
ò
ò

public Socket(String hote, int port) throws
UnknownHostException, IOException
public Socket(InetAddress hote, int port) throws IOException
public Socket(String hote, int port, InetAddress interface, int
portLocal) throws IOException
public Socket(InetAddress hote, int port, InetAddress
interface, int portLocal) throws IOException
protected Socket()
protected Socket(SocketImpl impl)

Sockets

DESS-ISIDIS

Classe Socket (2)
n

Information
ò

public InetAddress getInetAddress()
public int getPort()
public int getLocalPort()

ò

public InetAddress getLocalAddress()

ò
ò

n

Envoi/Réception de données
ò
ò

n

public InputStream getInputStream() throws IOException
public OutputStream getOutputStream() throws IOException

Fermeture
ò

public synchronized void close() throws IOException
Classe Socket (3)
n

Options
ò

TCP_NODELAY
ó Données expédiées aussitôt que possible quelque soit leur taille
ó

ò

Méthodes setTcpNoDelay (boolean valid) et setTcpNoDelay()

SO_LINGER
ó Attente ou non avant de fermer une socket au cas où il reste des
données à envoyer
ó Méthodes

setSoLinger (boolean valid, int secondes) et
getSoLinger()

Sockets

DESS-ISIDIS

Classe Socket (4)
ò

SO_TIMEOUT
ó Déclenchement

d’exception si le délai spécifié est dépassé lors
de la réception de données
ó Méthodes setSoTimeout (int ms) et getSoTimeout()

n

Exceptions
ò

SocketException
ó BindException : port déjà utilisé ou le programme n’a pas le

droit de l’utiliser

ó ConnectException : hôte occupé ou aucun processus n’écoute sur

le port
ó NoRouteToHostException : dépassement de temps
Exercices
Ecrire un programme qui :

n

ò
ò

se connecte au service daytime d’internet (port
numéro 13)
affiche la date et l’heure

Ecrire un programme qui implémente le service
echo (port numéro 7) - Utiliser les options des
sockets
Implémenter le protocole finger (port numéro 79)

n

n

Sockets

DESS-ISIDIS

Classe ServerSocket (1)
n
n

Rôle : standardiste
Gestion d’une connexion
ò
ò
ò
ò
ò

Création d’un nouvel objet ServerSocket affecté à un
port : constructeur ServerSocket
Attente de connextion : accept()
Echange d’informations : getInputStream() et
getOutputStream()
Clôture de la connexion par le client ou le serveur :
close()
Nouvelle attente
Classe ServerSocket (2)
n

Prise en compte des connexions
ò
ò

Un thread par connexion
Dans ftp, un processus par connexion
ó

n

Limite : 400 connexions

Gestion des demandes de connexion
ò

File d’attente gérée par le système
ó

Taille = 50 par défaut mais peut être modifiée

Sockets

DESS-ISIDIS

Classe ServerSocket (3)
n

Constructeurs
ò
ò
ò
ò

n

public ServerSocket(int port) throws IOException,
BindException
public ServerSocket(int port, int taillefile) throws IOException,
BindException
public ServerSocket(int port, int taillefile, InetAddress
adresseAttache) throws IOException
protected ServerSocket()

Prise en compte et clôture d’une connexion
ò
ò

public Socket accept() throws IOException
public void close() throws IOException
Classe ServerSocket (4)
n

Information
ò
ò

n

public InetAddress getInetAddress()
public int getLocalPort()

Options
ò

SO_TIMEOUT
ó Doit être initialisé avant accept
ó Méthodes

Sockets

setSoTimeout (int ms) et getSoTimeout()

DESS-ISIDIS

Exercice
n

Programmer le service daytime d’internet
ò
ò

Ne pas utiliser le port numéro 13 sauf si vous avez les
droits super-utilisateur
Utiliser un numéro de port supérieur à 1024
Protocoles TCP et UDP
n

TCP
*
*
*
*

n

Garantie d’arrivée dans l’ordre de paquets de données
Fiabilité de transmission
Lenteur des transmissions (http par exemple)
Vu comme un «service téléphonique»

UDP
*
*
*
*
*

Arrivée dans le bon ordre non garantie
Non fiabilité des transmissions
Rapidité des transmissions
Applications audio/vidéo
Vu comme un «service postal»

Sockets UDP point-à-point
n
n

Pas de différence de classe entre le client et le
serveur
Deux classes Java dans java.net
* DatagramPacket
* DatagramSocket

n

DatagramPacket
* Assemblage des données en partance en datagrammes
* Extraction des données des datagrammes reçus

n

DatagramSocket
* Envoi et réception des datagrammes UDP (objets
DatagramPacket)
Classe DatagramPacket (1)
n

Constructeurs
* DatagramPacket destiné à la réception de données
( public

DatagramPacket(byte tampon[], int longueur)
( Réception des données dans tampon
( Longueur maximale : 65 507 octets
( Java

remplit les champs de DatagramPacket : adresse IP de la
machine distante et le numéro de port concerné

* DatagramPacket destiné à l’envoi de données
( public

DatagramPacket(byte tampon[], int longueur,
InetAddress ia, int port)
( Conseil : utiliser getBytes() de la classe String pour
transformer des chaînes de caractères en tableaux d’octets

Classe DatagramPacket (2)
Structure d’un datagramme
En-tête IP
4 octets

4 octets

2 octets

En-tête UDP
2 octets

2 octets

Charge utile
2 octets

...

Contrôle pour fiabilité
Longueur
Port destinataire
Port expéditeur
Hôte destinataire
Hôte expéditeur
Classe DatagramPacket (3)

n

Information
* public int getPort()
( Numéro

de port de provenance si datagramme reçu
de port de destination si datagramme créé
localement

( Numéro

* public InetAddress getAddress()
( Adresse

du hôte distant si datagramme reçu
( Adresse du hôte local si datagramme créé localement

Classe DatagramPacket (4)
n

Information (suite)
* public byte[] getData()
( Tableau

d’octets du datagramme
( Caractères ASCII : String s=new String(dp.getData(), 0, 0,
dp.getLength());
( Caractères non ASCII : ByteArrayInputStream b=new
ByteArrayInputStream(dp.getData(), 0, 0, dp.getLength());

* public InetAddress getLength()
( Taille

en octets du datagramme
Classe DatagramSocket (1)
n

Constructeurs
* DatagramSocket utilisé par le client
( public DatagramSocket() throws SocketException
( Ports de destination et de partance spécifiés dans le
datagramme (objet DatagramPacket)
* DatagramSocket utilisé par le serveur
( public DatagramSocket(int port) throws SocketException
( Remarque : les ports TCP et leurs équivalents UDP ne sont pas
liés i.e. un même numéro de port peut être associé à la fois à
une socket TCP et une socket UDP sans provoquer aucun
problème de conflit
* DatagramSocket utilisé par le serveur multi -adresse
( public DatagramSocket(int port, InetAdress ia) throws
SocketException

Classe DatagramSocket (2)
n

Emission/Réception de datagrammes
* public void send(DatagramPacket dp) throws IOException
* public void receive(DatagramPacket dp) throws IOException

n

Information
* public int getLocalPort()
*Numéro de port (anonyme et assigné par le système) sur lequel la
socket courante écoute

n

Fermeture
* public void close()

n

Option : SO_TIMEOUT
* public synchronized void setSoTimeout(int timeout) throws
SocketException
Exercices
n

Ecrire un client UDP générique
ó

n
n

Une classe qui permet au programmeur d’utiliser les sockets UDP
sans avoir à manipuler les datagrammes (pas de DatagramPacket)

Ecrire un client UDP daytime
Ecrire une application echo client/serveur UDP multithreadée

Sockets multi-point
n

Communication multi-point : on s’adresse à un groupe
qu’on peut intégrer et quitter à sa guise
* Exemples : visio-conférence, radio, télévision, etc.

n

Multi-point = compromis
* Multi-diffusion
* Point-à-point

n

Caractéristiques
* Efficace car données dupliquées au moment opportun
* Basée sur l’utilisation de routeurs multi-point

n

Applications
* Jeux réseau multi -utilisateurs, SGF distribués, calcul parallèle
& distribué, etc.
Principe

Routeur
multi-point

Principe

Routeur
multi-point
Principe

Routeur
multi-point

Principe

Routeur
multi-point
Principe

Routeur
multi-point

Principe

Routeur
multi-point
Principe

Routeur
multi-point

Principe

Routeur
multi-point
Adresses et groupes multi-point (1)
Adresse multi-point

n

ò
ò

Référence un groupe d’hôtes (groupe multi-point)
Rangée dans la classe D (4 premiers bits : 1110)

Groupe multi-point

n

ò
ò

Plusieurs hôtes Internet partageant la même adresse multi point
Libre adhésion ou départ au/du groupe

lnternet Assigned Number Autority (IANA) est
responsable de l’affectation des adresses mutli-point

n

ò
ò

Il en existe 80
Exemple : AUDIONEWS.MCAST.NET --> 224.0.1.7 - Actualité
audio transmise en multi-point

Sockets

DESS-ISIDIS

Adresses et groupes multi-point (2)
ò

n
n

Liste exhaustive dans :

http://www.iana.org/assignments/multicast-addresses
Il existe des routeurs multi-point (mrouteurs)
Datagramme multi-point

TTL
1 octet

En-tête IP
4 octets

4 octets

En-tête UDP
2 octets

2 octets

2 octets

Charge utile
2 octets

Longueur
Port destinataire
Port expéditeur
Hôte destinataire

...

Contrôle pour fiabilité
Time-To-Live (TTL)
n

Définition
ò
ò

n

Portée d’un datagramme i.e. nombre de routeurs maximum par
lesquels un datagramme transite avant sa suppression
Réseau local : TTL=1, Région : TTL=16, Monde entier : TTL=127

Utilisation
* TTL décrémentée à chaque passage dans un routeur
* TTL=0 : datagramme supprimé

Mise en œuvre des sockets multi-point
n

Classe java.net.MulticastSocket
ò

n

Dérivée de la classe java.net.DatagramSocket

Constructeurs
ò

public MulticastSocket() throws SocketException
ó
ó

ò

Port assigné par le système
getLocalPort() : renvoie le numéro du port

public MulticastSocket(int port) throws
SocketException
Communication avec un groupe multi-point (1)
n

Opérations possibles
ò
ò
ò

n

Adhésion à un groupe
Echanger (Emettre/Recevoir) des données avec les
membres d’un groupe
Quitter un groupe

Méthodes
ò
ò

public void joinGroup(InetAddress adrmultipt) throws
SocketException
public void leaveGroup(InetAddress adrmultipt)
throws SocketException

Communication avec un groupe multi-point (2)
ò
ò
ò

Public synchronized void send(DatagramPacket dp,
byte ttl) throws IOException, SocketException
public void setInterface(InetAddress interface)
throws SocketException
public InetAddress getInterface() throws
SocketException
Exercices
n

Programmer une taupe multi-point
ò Adhésion

à un groupe multi-point
ò Boucle sur réception de données envoyées au
groupe
n

Ecrire un expéditeur de données multi-point
ò Adhésion

à un groupe multi-point
ò Envoi de données aux membres du groupe
ò Sortie du groupe

Weitere ähnliche Inhalte

Was ist angesagt?

Rapport application chat
Rapport application chatRapport application chat
Rapport application chatTbatou sanae
 
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
 
Les socket ing1_issat
Les socket ing1_issatLes socket ing1_issat
Les socket ing1_issatsloumaallagui
 
Système répartis avec RMI
Système répartis avec RMISystème répartis avec RMI
Système répartis avec RMIKorteby Farouk
 
Etude DéTailléé de la pile réseau sous GNU Linux
Etude DéTailléé de la pile réseau sous GNU LinuxEtude DéTailléé de la pile réseau sous GNU Linux
Etude DéTailléé de la pile réseau sous GNU LinuxThierry Gayet
 
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
 
Présentation de RMI Java
Présentation de RMI JavaPrésentation de RMI Java
Présentation de RMI JavaZakaria Bouazza
 
Généralités sur les réseaux informatiques – Protocoles ip
Généralités sur les réseaux informatiques – Protocoles ipGénéralités sur les réseaux informatiques – Protocoles ip
Généralités sur les réseaux informatiques – Protocoles ipClub Scientifique de l'ESI - CSE
 
Adressage ip l_adresse_ip_2
Adressage ip l_adresse_ip_2Adressage ip l_adresse_ip_2
Adressage ip l_adresse_ip_2finder0000
 
Étude et réalisation d’une application de contrôle d’un PC à distance en JAVA...
Étude et réalisation d’une application de contrôle d’un PC à distance en JAVA...Étude et réalisation d’une application de contrôle d’un PC à distance en JAVA...
Étude et réalisation d’une application de contrôle d’un PC à distance en JAVA...Bachir Benyammi
 

Was ist angesagt? (19)

Rapport application chat
Rapport application chatRapport application chat
Rapport application chat
 
Introduction aux-sockets
Introduction aux-socketsIntroduction aux-sockets
Introduction aux-sockets
 
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
 
Les socket ing1_issat
Les socket ing1_issatLes socket ing1_issat
Les socket ing1_issat
 
Développement informatique : Programmation réseau
Développement informatique : Programmation réseauDéveloppement informatique : Programmation réseau
Développement informatique : Programmation réseau
 
Reseau
ReseauReseau
Reseau
 
Sockets
SocketsSockets
Sockets
 
Système répartis avec RMI
Système répartis avec RMISystème répartis avec RMI
Système répartis avec RMI
 
Etude DéTailléé de la pile réseau sous GNU Linux
Etude DéTailléé de la pile réseau sous GNU LinuxEtude DéTailléé de la pile réseau sous GNU Linux
Etude DéTailléé de la pile réseau sous GNU Linux
 
(adressage)
(adressage)(adressage)
(adressage)
 
Appels de procédures distants (RPC)
Appels de procédures distants (RPC)Appels de procédures distants (RPC)
Appels de procédures distants (RPC)
 
Bah mamadou hady
Bah mamadou hadyBah mamadou hady
Bah mamadou hady
 
Hady bah l3
Hady bah l3Hady bah l3
Hady bah l3
 
Tour Horizont.Net
Tour Horizont.NetTour Horizont.Net
Tour Horizont.Net
 
Présentation de RMI Java
Présentation de RMI JavaPrésentation de RMI Java
Présentation de RMI Java
 
Généralités sur les réseaux informatiques – Protocoles ip
Généralités sur les réseaux informatiques – Protocoles ipGénéralités sur les réseaux informatiques – Protocoles ip
Généralités sur les réseaux informatiques – Protocoles ip
 
Adressage ip l_adresse_ip_2
Adressage ip l_adresse_ip_2Adressage ip l_adresse_ip_2
Adressage ip l_adresse_ip_2
 
Étude et réalisation d’une application de contrôle d’un PC à distance en JAVA...
Étude et réalisation d’une application de contrôle d’un PC à distance en JAVA...Étude et réalisation d’une application de contrôle d’un PC à distance en JAVA...
Étude et réalisation d’une application de contrôle d’un PC à distance en JAVA...
 
Remote method invocation
Remote method invocationRemote method invocation
Remote method invocation
 

Andere mochten auch

Chat application in java using swing and socket programming.
Chat application in java using swing and socket programming.Chat application in java using swing and socket programming.
Chat application in java using swing and socket programming.Kuldeep Jain
 
"COMERCIALES VENEZOLANOS LANZADOS AL AIRE EN 1990 HASTA PRINCIPIOS DEL 2000 Y...
"COMERCIALES VENEZOLANOS LANZADOS AL AIRE EN 1990 HASTA PRINCIPIOS DEL 2000 Y..."COMERCIALES VENEZOLANOS LANZADOS AL AIRE EN 1990 HASTA PRINCIPIOS DEL 2000 Y...
"COMERCIALES VENEZOLANOS LANZADOS AL AIRE EN 1990 HASTA PRINCIPIOS DEL 2000 Y...Dinora Hernandez Arias
 
Mantenimiento correctivo al hardware y software 3 (1)
Mantenimiento correctivo al hardware y software 3 (1)Mantenimiento correctivo al hardware y software 3 (1)
Mantenimiento correctivo al hardware y software 3 (1)Caroline Martinez
 
La esencia de la filosofia
La esencia de la filosofiaLa esencia de la filosofia
La esencia de la filosofiaHernandez Diana
 
eE7_Projektarbeit_ErsteIdeen
eE7_Projektarbeit_ErsteIdeeneE7_Projektarbeit_ErsteIdeen
eE7_Projektarbeit_ErsteIdeenLukas Hofmann
 
CT11210424 kajian kes 9.1, 10.1, q4 apk
CT11210424 kajian kes 9.1, 10.1, q4   apkCT11210424 kajian kes 9.1, 10.1, q4   apk
CT11210424 kajian kes 9.1, 10.1, q4 apkTembuakar Corp
 
Le dernier rappel de produit n’est pas loin
Le dernier rappel de produit n’est pas loinLe dernier rappel de produit n’est pas loin
Le dernier rappel de produit n’est pas loinConnected Futures
 
Medios Masivos de Mendoza
Medios Masivos de MendozaMedios Masivos de Mendoza
Medios Masivos de Mendozamarcelita79
 
Actividad 3 módulo 2 búsqueda google libros
Actividad 3 módulo 2 búsqueda google librosActividad 3 módulo 2 búsqueda google libros
Actividad 3 módulo 2 búsqueda google librosanatasilva
 
Gefährten redaktionshemen 2013 08-05
Gefährten redaktionshemen 2013 08-05Gefährten redaktionshemen 2013 08-05
Gefährten redaktionshemen 2013 08-05Andreas Kuenne
 
CROOS ESCOLAR
CROOS ESCOLARCROOS ESCOLAR
CROOS ESCOLARAna Ros
 

Andere mochten auch (20)

Chat application in java using swing and socket programming.
Chat application in java using swing and socket programming.Chat application in java using swing and socket programming.
Chat application in java using swing and socket programming.
 
Multi user chat system using java
Multi user chat system using javaMulti user chat system using java
Multi user chat system using java
 
Chat application
Chat applicationChat application
Chat application
 
"COMERCIALES VENEZOLANOS LANZADOS AL AIRE EN 1990 HASTA PRINCIPIOS DEL 2000 Y...
"COMERCIALES VENEZOLANOS LANZADOS AL AIRE EN 1990 HASTA PRINCIPIOS DEL 2000 Y..."COMERCIALES VENEZOLANOS LANZADOS AL AIRE EN 1990 HASTA PRINCIPIOS DEL 2000 Y...
"COMERCIALES VENEZOLANOS LANZADOS AL AIRE EN 1990 HASTA PRINCIPIOS DEL 2000 Y...
 
Mantenimiento correctivo al hardware y software 3 (1)
Mantenimiento correctivo al hardware y software 3 (1)Mantenimiento correctivo al hardware y software 3 (1)
Mantenimiento correctivo al hardware y software 3 (1)
 
La esencia de la filosofia
La esencia de la filosofiaLa esencia de la filosofia
La esencia de la filosofia
 
Infecciones dentarias
Infecciones dentariasInfecciones dentarias
Infecciones dentarias
 
Voyager autrement
Voyager autrementVoyager autrement
Voyager autrement
 
eE7_Projektarbeit_ErsteIdeen
eE7_Projektarbeit_ErsteIdeeneE7_Projektarbeit_ErsteIdeen
eE7_Projektarbeit_ErsteIdeen
 
CT11210424 kajian kes 9.1, 10.1, q4 apk
CT11210424 kajian kes 9.1, 10.1, q4   apkCT11210424 kajian kes 9.1, 10.1, q4   apk
CT11210424 kajian kes 9.1, 10.1, q4 apk
 
Le dernier rappel de produit n’est pas loin
Le dernier rappel de produit n’est pas loinLe dernier rappel de produit n’est pas loin
Le dernier rappel de produit n’est pas loin
 
Présentation1
Présentation1Présentation1
Présentation1
 
Curso virtual
Curso virtualCurso virtual
Curso virtual
 
Eröffnung gernlinden
Eröffnung gernlindenEröffnung gernlinden
Eröffnung gernlinden
 
Medios Masivos de Mendoza
Medios Masivos de MendozaMedios Masivos de Mendoza
Medios Masivos de Mendoza
 
Aprendizaje autonomo
Aprendizaje autonomoAprendizaje autonomo
Aprendizaje autonomo
 
Actividad 3 módulo 2 búsqueda google libros
Actividad 3 módulo 2 búsqueda google librosActividad 3 módulo 2 búsqueda google libros
Actividad 3 módulo 2 búsqueda google libros
 
Tc burger
Tc burgerTc burger
Tc burger
 
Gefährten redaktionshemen 2013 08-05
Gefährten redaktionshemen 2013 08-05Gefährten redaktionshemen 2013 08-05
Gefährten redaktionshemen 2013 08-05
 
CROOS ESCOLAR
CROOS ESCOLARCROOS ESCOLAR
CROOS ESCOLAR
 

Ähnlich wie 02 java-socket

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
 
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
 
173544 introduction-aux-sockets
173544 introduction-aux-sockets173544 introduction-aux-sockets
173544 introduction-aux-socketsnaimanaima1
 
Démons en PHP, de inetd à ZeroMQ
Démons en PHP, de inetd à ZeroMQDémons en PHP, de inetd à ZeroMQ
Démons en PHP, de inetd à ZeroMQAmaury Bouchard
 
programmation réseau en java
programmation réseau en java programmation réseau en java
programmation réseau en java Ezéquiel Tsagué
 
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)Pôle Systematic Paris-Region
 
Hacking your Home @bdx.io
Hacking your Home @bdx.ioHacking your Home @bdx.io
Hacking your Home @bdx.iolaurenthuet
 
C4 Réseaux : Couche reseau
C4 Réseaux : Couche reseauC4 Réseaux : Couche reseau
C4 Réseaux : Couche reseauPRONETIS
 
Programmation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communicationProgrammation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communicationECAM Brussels Engineering School
 
Deploiement_Lora_exo.pdf
Deploiement_Lora_exo.pdfDeploiement_Lora_exo.pdf
Deploiement_Lora_exo.pdfmerazgaammar2
 

Ähnlich wie 02 java-socket (20)

6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf
 
module_I6_Sockets.pdf
module_I6_Sockets.pdfmodule_I6_Sockets.pdf
module_I6_Sockets.pdf
 
Chap7_JavaNet.pdf
Chap7_JavaNet.pdfChap7_JavaNet.pdf
Chap7_JavaNet.pdf
 
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
 
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
 
Les sockets.pptx
Les sockets.pptxLes sockets.pptx
Les sockets.pptx
 
SdE 11 - Reseau
SdE 11 - ReseauSdE 11 - Reseau
SdE 11 - Reseau
 
SDE 10 - Reseau
SDE 10 - ReseauSDE 10 - Reseau
SDE 10 - Reseau
 
173544 introduction-aux-sockets
173544 introduction-aux-sockets173544 introduction-aux-sockets
173544 introduction-aux-sockets
 
Démons en PHP, de inetd à ZeroMQ
Démons en PHP, de inetd à ZeroMQDémons en PHP, de inetd à ZeroMQ
Démons en PHP, de inetd à ZeroMQ
 
OWF12/PHP de inetd à ZeroMQ
OWF12/PHP de inetd à ZeroMQOWF12/PHP de inetd à ZeroMQ
OWF12/PHP de inetd à ZeroMQ
 
programmation réseau en java
programmation réseau en java programmation réseau en java
programmation réseau en java
 
8-socket.pdf
8-socket.pdf8-socket.pdf
8-socket.pdf
 
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
 
Atelier 10
Atelier 10Atelier 10
Atelier 10
 
Hacking your Home @bdx.io
Hacking your Home @bdx.ioHacking your Home @bdx.io
Hacking your Home @bdx.io
 
C4 Réseaux : Couche reseau
C4 Réseaux : Couche reseauC4 Réseaux : Couche reseau
C4 Réseaux : Couche reseau
 
Adressage ip
Adressage ipAdressage ip
Adressage ip
 
Programmation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communicationProgrammation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communication
 
Deploiement_Lora_exo.pdf
Deploiement_Lora_exo.pdfDeploiement_Lora_exo.pdf
Deploiement_Lora_exo.pdf
 

02 java-socket

  • 1. Université de Lille1 Les sockets java N. Melab melab@lifl.fr Sockets DESS-ISIDIS Plan n n n Le modèle Sockets java Sockets C-UNIX BSD 4.X
  • 2. Le modèle n n n n Sockets : interface (point de communication) client/serveur utilisée à l’origine dans le monde UNIX et TCP/IP Etendue aux PCs (Winsock) et mainframes Primitives pour le support de communications reposant sur les protocoles (TCP/IP, UDP/IP) Les applications client/serveur ne voient les couches de communication qu’à travers l’API socket (abstraction) Sockets DESS-ISIDIS Sockets/OSI Application cliente Protocole Applicatif Application serveur API Socket UDP API Socket TCP UDP TCP IP IP Physique Physique
  • 3. Rôle des sockets n n n n n n Connexion à une machine distante Envoi/Réception de données Fermeture d’une connexion Attachement à un port Acceptation d’une demande de connexion à un port local Attente de demandes de connexion Sockets DESS-ISIDIS Notion de port n Connexion réseau * Adresse internet de la machine * Numéro du port n Pourquoi les ports ? * Sur une même machine, plusieurs services sont accessibles simultanément (web, email, etc.) * Points d’accès : ports logiques (65535) * Rien à avoir avec les ports physiques (série et parallèle)
  • 4. Désignation des ports n n n Port : numéro allant de 1 à 65535 Les ports 1 à 1023 sont réservés aux services courants : finger, ftp, http (80), SMTP (25), etc. Fichier d’assignation de ports : /etc/services Sockets DESS-ISIDIS Adresse internet n Connexion réseau * Adresse internet de la machine * Numéro : 193.49.192.193 n Désignation par des noms symboliques * Association de noms symboliques aux adresses numériques * Domain Name System (ou DNS) * Exemple : lil.univ-littoral.fr : 193.49.192.193
  • 5. Sockets java Sockets DESS-ISIDIS Gestion des ports (adresses) en Java n Classe InetAdress * * Dans java.net Champs ó hostName ó address (exemple : lil.univ-littoral.fr) (32 bits, exemple : 193.49.192.193) Pas de constructeur * 3 méthodes statiques * ó public static InetAddress InetAddress .getByName(String hote) static InetAddress[] InetAddress .getAllByName(String hote) ó public static InetAddress InetAddress .getLocalHost() ó public n Classes Socket, SocketServer et SocketImpl * getInetAddress()
  • 6. Gestion des sockets n Taxinomie * Sockets ó Point à point : Socket, SocketServer, SocketImlp * Sockets ó Point TCP UDP à point : DatagramSocket MultiCastSocket ó Multi-point : * Dans java.net Sockets DESS-ISIDIS Sockets TCP n Classe Socket ò ò ò n Connexion à une machine distante Envoi/Réception de données Fermeture d’une connexion Classe SocketServer ò ò ò Attachement à un port Acceptation d’une demande de connexion à un port local Attente de demandes de connexion
  • 7. Classe Socket (1) n Constructeurs ò ò ò ò ò ò public Socket(String hote, int port) throws UnknownHostException, IOException public Socket(InetAddress hote, int port) throws IOException public Socket(String hote, int port, InetAddress interface, int portLocal) throws IOException public Socket(InetAddress hote, int port, InetAddress interface, int portLocal) throws IOException protected Socket() protected Socket(SocketImpl impl) Sockets DESS-ISIDIS Classe Socket (2) n Information ò public InetAddress getInetAddress() public int getPort() public int getLocalPort() ò public InetAddress getLocalAddress() ò ò n Envoi/Réception de données ò ò n public InputStream getInputStream() throws IOException public OutputStream getOutputStream() throws IOException Fermeture ò public synchronized void close() throws IOException
  • 8. Classe Socket (3) n Options ò TCP_NODELAY ó Données expédiées aussitôt que possible quelque soit leur taille ó ò Méthodes setTcpNoDelay (boolean valid) et setTcpNoDelay() SO_LINGER ó Attente ou non avant de fermer une socket au cas où il reste des données à envoyer ó Méthodes setSoLinger (boolean valid, int secondes) et getSoLinger() Sockets DESS-ISIDIS Classe Socket (4) ò SO_TIMEOUT ó Déclenchement d’exception si le délai spécifié est dépassé lors de la réception de données ó Méthodes setSoTimeout (int ms) et getSoTimeout() n Exceptions ò SocketException ó BindException : port déjà utilisé ou le programme n’a pas le droit de l’utiliser ó ConnectException : hôte occupé ou aucun processus n’écoute sur le port ó NoRouteToHostException : dépassement de temps
  • 9. Exercices Ecrire un programme qui : n ò ò se connecte au service daytime d’internet (port numéro 13) affiche la date et l’heure Ecrire un programme qui implémente le service echo (port numéro 7) - Utiliser les options des sockets Implémenter le protocole finger (port numéro 79) n n Sockets DESS-ISIDIS Classe ServerSocket (1) n n Rôle : standardiste Gestion d’une connexion ò ò ò ò ò Création d’un nouvel objet ServerSocket affecté à un port : constructeur ServerSocket Attente de connextion : accept() Echange d’informations : getInputStream() et getOutputStream() Clôture de la connexion par le client ou le serveur : close() Nouvelle attente
  • 10. Classe ServerSocket (2) n Prise en compte des connexions ò ò Un thread par connexion Dans ftp, un processus par connexion ó n Limite : 400 connexions Gestion des demandes de connexion ò File d’attente gérée par le système ó Taille = 50 par défaut mais peut être modifiée Sockets DESS-ISIDIS Classe ServerSocket (3) n Constructeurs ò ò ò ò n public ServerSocket(int port) throws IOException, BindException public ServerSocket(int port, int taillefile) throws IOException, BindException public ServerSocket(int port, int taillefile, InetAddress adresseAttache) throws IOException protected ServerSocket() Prise en compte et clôture d’une connexion ò ò public Socket accept() throws IOException public void close() throws IOException
  • 11. Classe ServerSocket (4) n Information ò ò n public InetAddress getInetAddress() public int getLocalPort() Options ò SO_TIMEOUT ó Doit être initialisé avant accept ó Méthodes Sockets setSoTimeout (int ms) et getSoTimeout() DESS-ISIDIS Exercice n Programmer le service daytime d’internet ò ò Ne pas utiliser le port numéro 13 sauf si vous avez les droits super-utilisateur Utiliser un numéro de port supérieur à 1024
  • 12. Protocoles TCP et UDP n TCP * * * * n Garantie d’arrivée dans l’ordre de paquets de données Fiabilité de transmission Lenteur des transmissions (http par exemple) Vu comme un «service téléphonique» UDP * * * * * Arrivée dans le bon ordre non garantie Non fiabilité des transmissions Rapidité des transmissions Applications audio/vidéo Vu comme un «service postal» Sockets UDP point-à-point n n Pas de différence de classe entre le client et le serveur Deux classes Java dans java.net * DatagramPacket * DatagramSocket n DatagramPacket * Assemblage des données en partance en datagrammes * Extraction des données des datagrammes reçus n DatagramSocket * Envoi et réception des datagrammes UDP (objets DatagramPacket)
  • 13. Classe DatagramPacket (1) n Constructeurs * DatagramPacket destiné à la réception de données ( public DatagramPacket(byte tampon[], int longueur) ( Réception des données dans tampon ( Longueur maximale : 65 507 octets ( Java remplit les champs de DatagramPacket : adresse IP de la machine distante et le numéro de port concerné * DatagramPacket destiné à l’envoi de données ( public DatagramPacket(byte tampon[], int longueur, InetAddress ia, int port) ( Conseil : utiliser getBytes() de la classe String pour transformer des chaînes de caractères en tableaux d’octets Classe DatagramPacket (2) Structure d’un datagramme En-tête IP 4 octets 4 octets 2 octets En-tête UDP 2 octets 2 octets Charge utile 2 octets ... Contrôle pour fiabilité Longueur Port destinataire Port expéditeur Hôte destinataire Hôte expéditeur
  • 14. Classe DatagramPacket (3) n Information * public int getPort() ( Numéro de port de provenance si datagramme reçu de port de destination si datagramme créé localement ( Numéro * public InetAddress getAddress() ( Adresse du hôte distant si datagramme reçu ( Adresse du hôte local si datagramme créé localement Classe DatagramPacket (4) n Information (suite) * public byte[] getData() ( Tableau d’octets du datagramme ( Caractères ASCII : String s=new String(dp.getData(), 0, 0, dp.getLength()); ( Caractères non ASCII : ByteArrayInputStream b=new ByteArrayInputStream(dp.getData(), 0, 0, dp.getLength()); * public InetAddress getLength() ( Taille en octets du datagramme
  • 15. Classe DatagramSocket (1) n Constructeurs * DatagramSocket utilisé par le client ( public DatagramSocket() throws SocketException ( Ports de destination et de partance spécifiés dans le datagramme (objet DatagramPacket) * DatagramSocket utilisé par le serveur ( public DatagramSocket(int port) throws SocketException ( Remarque : les ports TCP et leurs équivalents UDP ne sont pas liés i.e. un même numéro de port peut être associé à la fois à une socket TCP et une socket UDP sans provoquer aucun problème de conflit * DatagramSocket utilisé par le serveur multi -adresse ( public DatagramSocket(int port, InetAdress ia) throws SocketException Classe DatagramSocket (2) n Emission/Réception de datagrammes * public void send(DatagramPacket dp) throws IOException * public void receive(DatagramPacket dp) throws IOException n Information * public int getLocalPort() *Numéro de port (anonyme et assigné par le système) sur lequel la socket courante écoute n Fermeture * public void close() n Option : SO_TIMEOUT * public synchronized void setSoTimeout(int timeout) throws SocketException
  • 16. Exercices n Ecrire un client UDP générique ó n n Une classe qui permet au programmeur d’utiliser les sockets UDP sans avoir à manipuler les datagrammes (pas de DatagramPacket) Ecrire un client UDP daytime Ecrire une application echo client/serveur UDP multithreadée Sockets multi-point n Communication multi-point : on s’adresse à un groupe qu’on peut intégrer et quitter à sa guise * Exemples : visio-conférence, radio, télévision, etc. n Multi-point = compromis * Multi-diffusion * Point-à-point n Caractéristiques * Efficace car données dupliquées au moment opportun * Basée sur l’utilisation de routeurs multi-point n Applications * Jeux réseau multi -utilisateurs, SGF distribués, calcul parallèle & distribué, etc.
  • 21. Adresses et groupes multi-point (1) Adresse multi-point n ò ò Référence un groupe d’hôtes (groupe multi-point) Rangée dans la classe D (4 premiers bits : 1110) Groupe multi-point n ò ò Plusieurs hôtes Internet partageant la même adresse multi point Libre adhésion ou départ au/du groupe lnternet Assigned Number Autority (IANA) est responsable de l’affectation des adresses mutli-point n ò ò Il en existe 80 Exemple : AUDIONEWS.MCAST.NET --> 224.0.1.7 - Actualité audio transmise en multi-point Sockets DESS-ISIDIS Adresses et groupes multi-point (2) ò n n Liste exhaustive dans : http://www.iana.org/assignments/multicast-addresses Il existe des routeurs multi-point (mrouteurs) Datagramme multi-point TTL 1 octet En-tête IP 4 octets 4 octets En-tête UDP 2 octets 2 octets 2 octets Charge utile 2 octets Longueur Port destinataire Port expéditeur Hôte destinataire ... Contrôle pour fiabilité
  • 22. Time-To-Live (TTL) n Définition ò ò n Portée d’un datagramme i.e. nombre de routeurs maximum par lesquels un datagramme transite avant sa suppression Réseau local : TTL=1, Région : TTL=16, Monde entier : TTL=127 Utilisation * TTL décrémentée à chaque passage dans un routeur * TTL=0 : datagramme supprimé Mise en œuvre des sockets multi-point n Classe java.net.MulticastSocket ò n Dérivée de la classe java.net.DatagramSocket Constructeurs ò public MulticastSocket() throws SocketException ó ó ò Port assigné par le système getLocalPort() : renvoie le numéro du port public MulticastSocket(int port) throws SocketException
  • 23. Communication avec un groupe multi-point (1) n Opérations possibles ò ò ò n Adhésion à un groupe Echanger (Emettre/Recevoir) des données avec les membres d’un groupe Quitter un groupe Méthodes ò ò public void joinGroup(InetAddress adrmultipt) throws SocketException public void leaveGroup(InetAddress adrmultipt) throws SocketException Communication avec un groupe multi-point (2) ò ò ò Public synchronized void send(DatagramPacket dp, byte ttl) throws IOException, SocketException public void setInterface(InetAddress interface) throws SocketException public InetAddress getInterface() throws SocketException
  • 24. Exercices n Programmer une taupe multi-point ò Adhésion à un groupe multi-point ò Boucle sur réception de données envoyées au groupe n Ecrire un expéditeur de données multi-point ò Adhésion à un groupe multi-point ò Envoi de données aux membres du groupe ò Sortie du groupe