Vous êtes sur la page 1sur 78

Universit Abdelmalek Essadi

Ecole Normale Suprieure de Ttouan

Module:Technologie Client Serveur-DAI2/S3


El khattabi Zaynab
23 Sept 2014

Systmes rpartis
Conception dapplication en mode Message
Modlisation des protocoles par automates synchroniss
L interface socket

La plupart des applications informatiques sont rparties


Besoins propres des applications
Communication, coopration
Partage dinformation, accs des ressources distantes
Rpartition intrinsque des applications
Possibilits techniques
Cot et performances des machines et des communications:
Rapport performances prix : > 50% par an
Fibre optique par tout et Rseaux haut dbit avec des dizaine de
Gigabit/s
Interconnexion gnralise:
Accessibilit immdiate des ressources distantes.
Interpntration Informatique-tlcom-tlvision:
Les applications informatiques utilisent les technologies tlcom
Les rseaux de tlcom sont des systmes informatiques
La tlvision devient numrique et interactive

Systmes rpartis : Proprits

Coopratif: composants cooprent dans rseau de communication


Globalisation: mise en fin dune mission commune
Tolrance: systme survit mme aux dfaillances partielles

Applications rparties : Exigences

Transparence (RMI-IIOP)
Mise au point
Contrle de lexcution

Systme en Couches: sparation interface et traitements


Rutilisation: rcupration de lexistant;
Flexibilit: capacit dvolution.

Communication et partage dinformation


Bibliothques virtuelles

Collecticiels
Edition cooprative
Tlconfrence

Applications temps-rel
Contrle des procds
Localisation de mobiles

Application Workflow
Services grand public
e-journal
Tlvision interactive
e-Commerce

Modlisation de lensemble des tches raliser dans un


processus mtier et des diffrents acteurs qui interviennent
pour laccomplissement de ces tches

tablir: le circuit de validation, les tches raliser entre les


diffrents intervenants, les dlais respecter, et les modes de
validation

Fournir la matire premire en terme dinformation pour la


ralisation des traitements de chaque intervenant

Deux modes procdural (cheminement pr-tablie ou


statique) et ad hoc (cheminement dynamique)

Exemples Workflow
Remboursement des frais
Demande de congs
Suivi des rclamations clients

Les Gains
Historiques des dcisions et des
actions
Optimisations des processus
Amlioration de la circulation de
linformation
Rentabilisation rapide du processus
mtier

Une classe dapplication caractrise par lexcution coordonne dun ensemble


de tches sur diffrents lments de traitements
Excution coordonne dpend du squence de tches et des donnes changes
Exemple :Exemple dun Systme Distribu bas sur une Application Workflow

Architecture dune application Workflow

Coordination des tches


Synchronisation et communication
Mcanisme base dvnements

Gestion de lexcution
Association tche agent
Rles, groupes de processus

Adaptation lenvironnement
Support (systme centralis, grappe, LAN, WAN, ..)
Protocole (Objet partags, RPC, CORBA, WWW, ..)

Rutilisation de lexistant.

Tlvision Interactive: via un bouton de la


tlcommande, on pourra participer aux sondages des
journaux tlviss, voter pour un candidat d'une
mission de tl-ralit, mais aussi afficher des
informations complmentaires sur un reportage, des
statistiques pendant un match de foot ou la fiche
technique d'un film. En parallle, utiliser lInternet sur le
TV sans avoir allumer lordinateur, ou encore
commander directement un produit pendant la diffusion
de sa publicit.

Dlivrer des clients des flux multimdia (vido + audio)


Poste TV avec un abonnement rseau WAN
Architecture Orient Objet avec Appels Distants
Interface dispose dun ensemble de mthodes ou procdures
Chaque mthode est ralis concrtement par un service
implment sur un serveur
Chaque objet est accessible par une rfrence
Un service de nom est donc par dfaut ncessaire pour trouver les
rfrences d'un objet partir d'un nom symbolique
La rfrence du services de nom est connue a l'initialisation du
systme.

1. Solliciter un service TV
interactive
2. Demander la rfrence de
service
3. Appeler limplmentation
de service
4. Charger les arguments
ncessaires
5. Excution de service
6. Renvoi des rsultats.

Architecture dun Systme TV Interactive

contraintes dune application grand public :


disponibilit du service : duplication active/passive, reprise
performances : bon dimensionnement, rpartition de charge
simplicit de linterface : terminal TV
passage lchelle : volution incrmentale
gnie logiciel dune grande application rpartie :
organisation client/serveur
modle objets
utilisation systmatique de lIDL
service de noms volu
capacit dvolution

Aussi, il sagit dun Services Grand public

Permettre lutilisation dun mdia lectronique pour la


ralisation de transactions commerciales
Mcanisme dachat par Internet
Architecture base sur les composants suivants:

Catalogue lectronique en ligne


Moteur de recherche
Panier virtuel pour conserver la trace dachat du client
Paiement scuris en ligne assur souvent par un tiers de
confiance
Suivi des commandes.

Modle e-commerce dcrit les


composants fondamentaux des
solutions
de
commerce
lectronique: linfrastructure des
plates-formes
de
commerce
lectronique (Internet, J2EE, .NET, la
scurit rseau), les langages
dapplication (HTML, XML, CGI, JS,
...), linfrastructure dintgration des
applications dentreprise et des
processus business (EAI,Services
Web, XML / EDI), les technologies
daccompagnement du commerce
en ligne et les standards eBusiness.

Architecture logicielle de le-commerce

Contraintes :
protection des informations confidentielles (client
fournisseur)
respect des rgles de concurrence
respect des garanties du fournisseur au client :
offre sincre, excution du contrat, ...
respect des garanties du client au fournisseur :
identit, paiement, ...
respect des droits de proprits (licences, droit dauteur)
disponibilit permanente du service

et

Dfinition
Il sagit dune application dcoupe en plusieurs units tel
que tout unit peut tre:
Programm avec un langage diffrent
Situ dans une machine diffrente
Excut dans un systme diffrent

Le systme peut continuer fonctionner (ventuellement


en mode dgrad) malgr les dfaillances partielles des
composants ou du rseau de communication.

Avantages
Organisationnel
Sparation en units
Dlocaliser les implications
Augmenter les performances
Traitement en parallle des tches
Caractrisation des pannes
Passage lchelle
Reproduction des constitutifs de lapplication
Amliorer la rutilisation et la maintenance
Dveloppement et volution rapides
Maintenance facile.

Inconvnients
Infrastructures spcifiques
Gestion des erreurs
Suivi des excutions
Pas de vision global instantane
Plusieurs intervenants et dlais de transmission.
Charge de ladministration dpend de la taille du systme
Installation et configuration
Scurit des traitements et donnes.
Rapport qualit/prix
Solution technique dcisionnelles (modlisation, alimentation,
dveloppement, mise en production): Reporting / Pilotage , ETL ,EAI

Conditions de Distribution

Distribution Gographique
Distribution Structurelle
Programmation par modules, composants, et aspect.
Distribution Fonctionnelle
Couche service, couche mtier, couche prsentation, et couche
de donne.

Diffrents Niveaux qui Forment un Systme Rparti

Caractristiques possibles dune application distribue:


Htrognit:
Partage et utilisation de tous les ressources membres du systme distribu tel
que chacun ou un ensemble de ces membres est muni par un gestionnaire
spcifique (SGBD,workflow) de ces ressources et qui oprent selon un
interoprabilit (OS, protocole).
Ouverture:
Comment rendre un systme extensible (matriellement: CPU,RAM,DD ou
logicielle: retrait ou adjonction de services) sans interruption des autres
services et via une configuration de dploiement facile et efficace.
Scurit:
Dtecter les applications malveillantes et grer la situation (authentification)
Grer laccs au serveur et contrler la ralisation des tches autorises
(intgrit).

Caractristiques possibles dune application distribue:

Passage lchelle:
Dterminer les changements ncessaires quand la charge augmente (ajout de:
matriel, logiciel, sites et vrifier le nombre: dutilisateurs, dobjets et requtes).
Reflte la flexibilit dun systme.
Tolrance aux pannes:
Atteindre via une redondance matrielle et logiciel et reflet la disponibilit du systme.
Concurrence:
Capacit de raliser plusieurs tches en mme temps ncessaire lorsque plusieurs
clients se connectent un serveur dans un dlai trs court ainsi lorsque une
ressource a plusieurs demandes en mme temps
Deux architectures possible: Serveur interactif qui gre une requte la fois qui est
facile implanter et plus fiable pour laccs au bases de donnes mais reste bloqu
toute la dure de gestion de requte. Serveur concurrent gre plusieurs requte la
fois.

Caractristiques possibles dune application distribue:


Transparence:
Le systme doit tre peru comme une entit par les dveloppeurs
dapplication et les requtes des clients (accs, localisation, rseau,
concurrence, rplication, pannes, migration, performance);
Protocole de nommage:
Protocole utilis par les membres du systme pour accder un objet
(URL, DNS, LDAP, )
Stateless:
Dans cet tat, le client se connecte au serveur dans le but dexcuter
une requte, une fois le serveur gre la demande du client, les deux
ferment la connexion.
Stateful:
Ici, le client se connecte pour raliser plusieurs requtes avant de
fermer la connexion avec le serveur.

Dfinition:

Ensemble des services logiciels construit au dessus


dun protocole de transport afin de permettre
lchange de requtes et des rponses entre Client et
Serveur dune manire transparente.

Rsoudre linteroprabilit
Standardiser laccs des composants distants.
Rsoudre lhtrognit
Oprable avec nimporte quel systme matriel (indpendant de type
de codage), nimporte quel systme dexploitation, nimporte quel
plateforme de dveloppement des applications.

Mcanisme de base dun Middleware

Missions

Service de Noms, rsolution des noms par rfrences


Persistance, plusieurs instances (ADO.net, JDBC)
Scurit, confidentialit, Authentification, et Intgrit
Transaction ACID
Atomique : Toutes les oprations sont excutes ou aucune ne
lest.
Cohrente : Une base de donnes passe dun tat cohrent
un autre.
Isole : Aucune modification nest visible sur la base tant que
toutes les oprations nont pas t ralises et valides.
Durable : Les transactions valides sont conserves mme si le
systme tombe en panne.

Types de middleware
Gnral
Protocoles de communication, rpertoires rpartis, services
dauthentification, service de temps, RPC, etc
Services rpartis de type NOS (Networked OS) : services de
fichiers, services dimpression.
Spcifique
de BD : ODBC, IDAPI, EDA/SQL, etc
de groupware : MAPI, Lotus Notes
dobjets : CORBA, COM/DCOM, .NET

Types de middleware

Le type du middleware caractrise la nature du dialogue :


synchrone / asynchrone : obligation (/ou non) pour le client d'attendre la
rponse du serveur aprs chaque envoi
avec connexion / sans connexion (ou avec session): ncessit (/ou non)
d'tablir une connexion entre le client et le serveur

Dialogue

Sans session

Avec session

Synchrone

Mode RPC

APPC ou RDA

asynchrone

Mode message

APPC ou RDA

RPC : Remote Procedure Call ou appels de procdure distance (ex: DCE = IPC
bas sur RPC)
APPC : Application Program to Communication (l'APPC = lment de SNA d'IBM)
RDA : Remote Data Access : norme de l'ISO pour l'accs distant aux BdD

Communication Synchrone et Asynchrone

Communication Avec connexion et sans connexion

Middelware Orient Message, MOM, offre un fondement de


communication entre tous les composants (services) qui entrent
dans la composition de ce logiciel.
un systme clients/serveurs
un systme asynchrone dchange de messages
La plupart des implmentations fournissent aussi une interface
synchrone.
Utilise des files de messages;
Possde un Message Brocker
Fournit un API, en gnral dans plusieurs langages et pour plusieurs
systmes.

Echanges fondamentalement asynchrones :


le client envoie un message un destinataire (le service) dsign par un nom
(plutt qu'une adresse ou une localisation) sans se soucier de sa disponibilit

Avantages :
grande simplicit car l'API repose sur les 2 fonctions{envoyer, recevoir}
la technique "stocker et propager" (store and forward) garantit, quels que soit les
vnements, que le service appel sera effectu une et une seule fois (utile dans
applications financires)
Inconvnients :
manque de contrle sur le dlai d'obtention d'une rponse

Principes directeurs
Communication asynchrone
Dsignation du destinataire
directe
indirecte (via file de messages)

Structuration des messages: messages ventuellement typs


Interface de programmation
primitives de base : envoyer - recevoir (send, receive)
extensions : groupes, dsignation associative
Mise en oeuvre, outils
interface socket sur niveau de transport, IP multicast
outils de dveloppement encore peu volus

Bas directement sur le mode de communication par message.


Un service comprenant essentiellement deux primitives pour
communiquer et se synchroniser.
TYPE COM_MESSAGE_ASYNCHRONE;
METHOD envoyer (id_metteur, id_rcepteur, message, complments);
METHOD recevoir (id_metteur, id_rcepteur, message);
METHOD ...;
END COM_MESSAGE_ASYNCHRONE.

identificateurs : ports de communication


messages : zones de donnes (types).
complments : selon les smantiques multiples dfinissant les
qualits de services

Utilisation de messages pour raliser un schma client/serveur


ralisation du client-serveur avec des sockets

Problmes
scurit (nimporte qui peut envoyer un message sur port_s, port_c
gestion des erreurs

Acteur : action associe la rception dun message


pouvant dclencher lenvoi dautres messages

Problmes : absence de structuration, gestion des erreurs

Aspect principal pour la communication et la synchronisation


- Le mode message asynchrone
ralise
un
"producteurconsommateur" rparti entre un
metteur et un rcepteur.
- Complet paralllisme autoris entre
l'metteur et le rcepteur.
Rien n'empche aussi l'une des
entits ('metteur) de suspendre son
excution.
Smantique de l'activation:
- De type activation en parallle
("fork")
- Interprtable galement comme un
branchement inconditionnel
("goto").

Aspect d'change de donnes


Le mode message permet une opration d'affectation de variable distance:

envoyer (M=crire(v) , id_dest)


recevoir (M'=lire(v) , id-emet)
. Avec possibilit de gestion de cohrence des types des variables v.
. Avec une smantique de consistance des donnes entre l'metteur et le
rcepteur trs faible.
Proprit minimale de cohrence des communications point point:
envoyer (M=crire) -> recevoir (M'=lire)
Si a t1 : metteur.crire (v,t1)
=> il existe t2>t1 : recepteur.lire (v, t2)

Interaction entre processus par change de message

Comportement squentiel des processus:


=> Ensemble de processus (entits rseaux) squentiels
communicants (trs souvent en mode point point deux
entits seulement).
Les mthodes de spcification de chaque processus utilisent
des automates d'tat fini
Les processus communicants se synchronisent par messages
asynchrones.

Reprsentation graphique des applications: automates


tats : Il est dfini par un ensemble significatif de variables
locales de chaque processus.
Transitions : Elles comportent deux mentions: les conditions,
et les actions.
Condition :
condition boolenne portant sur les variables locales.
condition boolenne portant sur les changes (requte
de service, message entrant).
condition boolenne portant sur les signaux internes
(horloge).
Action : C'est l'opration ralise lors du franchissement
de la transition.

Reprsentation graphique des applications: Etats


Chaque tat doit tre aisment interprtable
en terme d'volution locale de l'application rpartie.
- Il reprsente un point d'avancement du contrle.
- Il est dfini par un ensemble significatif de variables locales de
chaque processus. Il peut recevoir:

- un identifiant bien choisi


- un commentaire
- le prdicat sur les variables

Reprsentation graphique des applications: Transition

Elles comportent deux mentions:


la condition dclenchante
l'action raliser
Elles sont reprsentes par les arcs du graphe associ
l'automate conduisant d'un tat initial un tat final.

Reprsentation graphique des applications: Actions

C'est l'opration ralise lors du franchissement de la


transition.
les traitements raliser lors du passage l'tat suivant
affectation de variables
envoi de messages.
Le dtail des actions ne doit pas tre trop important sinon le
modle est illisible
Sinon renvoyer des textes annexs la spcification.

Reprsentation des oprations sur les diagrammes (conditions


et actions)
condition recevoir(M) ?M
action envoyer(M) !M
Exemple :
P1 :P2!M1
P2 :P1?M1
Avec
Type[message_mis] = Type [message_reu]

Reprsentation des transitions

Alternative en un tat
Indterminisme aspect fondamental du rseau.
- en un mme tat plusieurs messages (ou vnements) peuvent arriver.
- l'un des messages est plac en tte de la file de rception.
- ce sont les alas de fonctionnement des matriels et des logiciels, les
choix effectus qui conduisent souvent l'interclassement dans la file
d'entre.
- On choisit l'une des transitions ayant sa condition boolenne satisfaite (sa
garde ouverte);

Exemples

Bilan : les atouts du mode asynchrone

Systmes faiblement coupls


Couplage temporel : systmes autonomes communicants
Communication spontane en mode push
Fonctionnement en mode dconnect : site absent ou utilisateur mobile
Couplage spatial : systmes grande chelle
Fonctionnement en mode partitionn : pannes temporaires de rseau
Communication anonyme : non connaissance des correspondants
Simplicit
Modle de communication canonique
Envoi de message
Base universelle : TCP-UDP/IP

Les usages des systmes asynchrones

Supervision
Parc dquipements distribus
Echange et partage de donnes
Envoi de documents (EDI)
Mise jour dun espace de donnes partages distribues
Intgration de donnes
Alimentation dun datawarehouse/datamart depuis des sources de
donnes htrognes
Intgration dapplication
Intra-entreprise : EAI (communication, routage, workflow)
Inter-entreprises : B2B et Web Services (communication, orchestration)
Informatique mobile
Communication entre quipements mobiles (souvent dconnects) et
serveurs dapplication

Bilan
C'est le mode le plus basique Comparable l'assembleur
(affectation, branchement).
Le moins contraignant il permet aux utilisateurs par des
changes successifs, la construction de tout type de
protocole.
L'utilisateur n'a pas en gnral envie d'tre oblig de
construire ses propres outils d'o:
L'enrichissement du mode message en termes de qualit de
service par les couches successives des protocoles rseau.
Le besoin d'autres schmas prdfinis plus complexes.
Le mode message asynchrone est encore le mode privilgi
des interfaces.

Pour crer une connexion entre un client et un serveur, les sockets


rseau permettent de grer les multi-tches et le flux laide dAPI
(Application Programming Interface). Le rle dAPI est de contrler et
dutiliser les sockets rseau.
Interfaces de mode message asynchrone
les interfaces dans les systmes OSI sont les interfaces logicielles
on peut distinguer deux types dinterfaces :
Interfaces transport assure la communication au niveau
Transport
Interfaces application assure la communication par messages au
niveau Application. Ce type des interfaces offre des extensions plus
ou moins significatives par rapport au niveau transport

Introduction
Une "socket" est un point d'accs de service pour des
couches transport essentiellement TCP/UDP
La caractristique principale d'une socket est donc son type.
Une socket possde un nom: un identifiant unique sur chaque
site (en fait un entier sur 16 bits) appel "numro de port".
Un socket = (Numro de port, Adresse IP).
Une socket est caractrise par un ensemble de primitives de
service pour l'accs aux fonctions de transport.
Une socket encapsule des donnes:
un descriptif (pour sa dsignation et sa gestion)
des files d'attente de messages en entre et en sortie.

Choix de conception des sockets

TCP

TCP est un transport fiable en connexion et en mode


bidirectionnel point point.
Une socket TCP peut tre utilise par plusieurs connexions
TCP simultanment.
Une connexion est identifie par le couple d'adresses
socket des deux extrmits.

UDP

Un change UDP est sans connexion (change de


datagrammes).
Les zones de donnes qui correspondent des envois
successifs sont respectes la rception

Il y a toujours diffrenciation entre une partie client et une partie


serveur .
Deux rles distincts au niveau de la communication via TCP/UDP
Mais possibilit que les lments communiquant jouent un autre
rle ou les 2 en mme temps
Diffrenciation pour plusieurs raisons
Identification : on doit connatre prcisment la localisation d'un
des 2 lments communiquants
Le cot serveur communique via une socket lie un port prcis :
port d'coute
Dissymtrie de la communication/connexion
Le client initie la connexion ou la communication

Principe:
Mode datagramme
Envois de paquets de donnes (datagrammes)
Pas de connexion entre parties client et serveur
Pas de fiabilit ou de gestion de la communication
Un paquet peut ne pas arriv (perdu par le rseau)
Un paquet P2 envoy aprs un paquet P1 peut arriver avant ce
paquet P1 (selon la gestion des routes dans le rseau)
Principe de communication
La partie serveur cre une socket et la lie un port UDP particulier
La partie client cre une socket pour accder la couche UDP et la
lie sur un port quelconque

Principe de communication (suite)


Le serveur se met en attente de rception de paquet sur sa socket
Le client envoie un paquet via sa socket en prcisant l'adresse du
destinataire
Couple @IP/port
Destinataire = partie serveur
@IP de la machine sur laquelle tourne la partie serveur et
numro de port sur lequel est lie la socket de la partie serveur
Il est reu par le serveur (sauf pb rseau)
Si le client envoie un paquet avant que le serveur ne soit prt
recevoir : le paquet est perdu

Java intgre nativement les fonctionnalits de communication


rseau au dessus de TCP-UDP/IP
Package java.net

Classes utilises pour communication via UDP


InetAddress : codage des adresses IP
DatagramSocket : socket mode non connect (UDP)
DatagramPacket : paquet de donnes envoy via une
socket sans connexion (UDP)

Classe InetAddress
Constructeurs:
Pas de constructeurs, on passe par des mthodes statiques pour crer un objet
Mthodes:
public static InetAddress getByName(String host) throws UnknownHostException
Cre un objet InetAddress identifiant une machine dont le nom est pass en
paramtre
public static InetAddress getLocalHost() throws UnknownHostException
Retourne l'adresse IP de la machine sur laquelle tourne le programme, c'est-dire l'adresse IP locale
public String getHostName()
Retourne le nom de la machine dont l'adresse est code par l'objet InetAddress

Classe DatagramPacket: Structure des donnes en mode datagramme


Constructeurs:
public DatagramPacket(byte[] buf, int length)
Cration d'un paquet pour recevoir des donnes (sous forme d'un tableau
d'octets)
Les donnes reues seront places dans buf
length prcise la taille max de donnes lire
Ne pas prciser une taille plus grande que celle du tableau
En gnral, length = taille de buf
public DatagramPacket(byte[] buf, int length, InetAddress address, int port)
Cration d'un paquet pour envoyer des donnes (sous forme d'un tableau
d'octets)
Ne pas prciser une taille suprieure celle de buf
address : adresse IP de la machine destinataire des donnes
port : numro de port distant o envoyer les donnes

Classe DatagramPacket:
Mthodes get

InetAddress getAddress()
Si paquet envoyer : adresse de la machine destinataire
Si paquet reu : adresse de la machine qui a envoy le paquet
int getPort()
Si paquet envoyer : port destinataire sur la machine distante
Si paquet reu : port utilis par le programme distant pour envoyer le
paquet
byte[] getData
Donnes contenues dans le paquet
int getLength()
Si paquet envoyer : longueur des donnes envoyer
Si paquet reu : longueur des donnes reues

Classe DatagramPacket:
Mthodes set

void setAddress(InetAdress adr)


Positionne l'adresse IP de la machine destinataire du paquet
void setPort(int port)
Positionne le port destinataire du paquet pour la machine distante
void setData(byte[] data)
Positionne les donnes envoyer
int setLength(int length)
Positionne la longueur des donnes envoyer

Classe DatagramSocket : Socket en mode datagramme


Constructeurs:
public DatagramSocket() throws SocketException
Cre une nouvelle socket en la liant un port quelconque libre
Exception leve en cas de problme (a priori il doit pas y en avoir)
public DatagramSocket(int port) throws SocketException
Cre une nouvelle socket en la liant au port local prcis par le
paramtre port
Exception leve en cas de problme : notamment quand le port est
dj occup

Classe DatagramSocket
Mthodes d'mission/rception de paquet
public void send(DatagramPacket p) throws IOException
Envoie le paquet pass en paramtre. Le destinataire est identifi par le
couple @IP/port prcis dans le paquet
Exception leve en cas de problme d'entre/sortie
public void receive(DatagramPacket p) throws IOException
Reoit un paquet de donnes
Bloquant tant qu'un paquet n'est pas reu
Quand paquet arrive, les attributs de p sont modifis
Les donnes reues sont copies dans le tableau pass en paramtre
lors de la cration de p et sa longueur est positionne avec la taille des
donnes reues
Les attributs d'@IP et de port de p contiennent l'@IP et le port de la
socket distante qui a mis le paquet

Classe DatagramSocket
Autres mthodes:

public void close()


Ferme la socket et libre le port laquelle elle tait lie
public int getLocalPort()
Retourne le port local sur lequel est lie la socket
Possibilit de crer un canal (mais toujours en mode non connect)
Pour restreindre la communication avec un seul destinataire distant
Car par dfaut peut recevoir sur la socket des paquets venant de
n'importe o

Classe DatagramSocket
Rception de donnes : via mthode receive
Mthode bloquante sans contrainte de temps : peut rester en
attente indfiniment si aucun paquet n'est jamais reu
Possibilit de prciser un dlai maximum d'attente
public void setSoTimeout(int timeout) throws SocketException
L'appel de la mthode receive sera bloquante pendant au plus
timeout millisecondes
Une mthode receive se terminera alors de 2 faons
Elle retourne normalement si un paquet est reu en moins du temps
positionn par l'appel de setSoTimeout
L'exception SocketTimeoutException est leve pour indiquer que le
dlai s'est coul avant qu'un paquet ne soit reu
SocketTimeoutException est une sous-classe de IOException

Avantages
Simple programmer (et apprhender)
Inconvnients
Pas fiable
Ne permet d'envoyer que des tableaux de byte

Structure des donnes changes


Format des donnes transmettre:
Trs limit a priori : tableaux de byte
Et attention la taille rserve : si le rcepteur rserve un tableau trop petit
par rapport celui envoy, une partie des donnes est perdue
Doit donc pouvoir convertir
Un objet quelconque en byte[] pour l'envoyer
Un byte[] en un objet d'un certain type aprs rception

Deux solutions:
Crer les mthodes qui font cela : (lourd et dommage de faire des
tches de si bas-niveau avec un langage volu comme Java)
Utiliser les flux Java pour conversion automatique

Principe
Fonctionnement en mode connect:

Donnes envoyes dans un tuyau et non pas par paquet


Flux de donnes
Correspond aux flux Java dans la mise en oeuvre des sockets TCP
Fiable : la couche TCP assure que :
Les donnes envoyes sont toutes reues par la machine destinataire
Les donnes sont reues dans l'ordre o elles ont t envoyes

Principe de communication
Le serveur lie une socket d'coute sur un certain port bien prcis et
appelle un service d'attente de connexion de la part d'un client
Le client appelle un service pour ouvrir une connexion avec le
serveur
Il rcupre une socket (associe un port quelconque par le systme)

Du cot du serveur, le service d'attente de connexion retourne une


socket de service (associe un port quelconque)
C'est la socket qui permet de dialoguer avec ce client

Comme avec sockets UDP : le client et le serveur communiquent en


envoyant et recevant des donnes via leur socket

Classes du package java.net utilises pour communication via


TCP:
InetAddress : codage des adresses IP
Mme classe que celle dcrite dans la partie UDP et usage
identique
Socket : socket mode connect
ServerSocket : socket d'attente de connexion du cot server

Classe Socket: Socket mode connect


Constructeurs

public Socket(InetAddress address, int port) throws IOException


Cre une socket locale et la connecte un port distant d'une
machine distante identifi par le couple address/port
public Socket(String address,int port) throws
IOException,UnknownHostException
De mme mais avec nom de la machine au lieu de son adresse IP code
Lve l'exception UnknownHostException si le service de nom ne
parvient pas identifier la machine

Variante de ces 2 constructeurs pour prciser en plus un port local


sur lequel sera lie la socket cre

Classe Socket
Mthodes d'mission/rception de donnes
Contrairement aux sockets UDP, les sockets TCP n'offrent pas
directement de services pour mettre/recevoir des donnes
On rcupre les flux d'entre/sorties associs la socket
OutputStream getOutputStream()
Retourne le flux de sortie permettant d'envoyer des donnes via la
socket
InputStream getInputStream()
Retourne le flux d'entre permettant de recevoir des donnes via la
socket
Fermeture d'une socket
public close()
Ferme la socket et rompt la connexion avec la machine distante

Classe Socket
Mthodes get :
int getPort()
Renvoie le port distant avec lequel est connect la socket
InetAddress getAddress()
Renvoie l'adresse IP de la machine distante
int getLocalPort()
Renvoie le port local sur lequel est lie la socket
public void setSoTimeout(int timeout) throws SocketException
Positionne l'attente maximale en rception de donnes sur le flux d'entre
de la socket
Si temps dpass lors d'une lecture : exception SocketTimeoutException
est leve
Par dfaut : temps infini en lecture sur le flux

Classe ServerSocket: Socket d'attente de connexion, cot serveur


uniquement
Constructeurs:
public ServerSocket(int port) throws IOException
Cre une socket d'coute (d'attente de connexion de la part de clients)
La socket est lie au port dont le numro est pass en paramtre
L'exception est leve notamment si ce port est dj li une socket

Mthodes:
Socket accept() throws IOException
Attente de connexion d'un client distant
Quand connexion est faite, retourne une socket permettant de communiquer
avec le client : socket de service
void setSoTimeout(int timeout) throws SocketException
Positionne le temps maximum d'attente de connexion sur un accept
Si temps coul, l'accept lve l'exception SocketTimeoutException

Par dfaut, attente infinie sur l'accept

Avantages
Niveau d'abstraction plus lev qu'avec UDP
Mode connect avec phase de connexion explicite
Flux d'entre/sortie
Fiable
Inconvnients
Plus difficile de grer plusieurs clients en mme temps
Ncessite du paralllisme avec des threads
Mais oblige une bonne structuration cot serveur

TP sur Lutilisation des sockets en java

Vous aimerez peut-être aussi