Upload
salim-mourabbi
View
57
Download
1
Embed Size (px)
Citation preview
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 1/68
28-févr.-13 1
Modèle & Architecture
Client/Serveur Programmation Réseaux
Mariam [email protected]
Filière GSTR2
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 2/68
28-févr.-13
Client/Serveur
Mariam Tanana 2
Informatique d’entreprise et
le modèle Client/Serveur
L'informatique d'entreprise a connu une évolution trèsrapide au cours des dix dernières années : les bases de données relationnelles : première plate-forme de
développement ; le modèle client-serveur est devenu le modèle vers lequel
convergent les architectures logicielles.
L'architecture Client/Serveur répond à la demande desutilisateurs pour des systèmes ouverts
Cette architecture vise l'intégration de systèmeshétérogènes (intéropérabilité logicielle, matérielle etréseaux)
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 3/68
28-févr.-13
Client/Serveur
Mariam Tanana 3
Client/Serveur :Evolution : Architectures centralisées - 1970
1ère génération
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 4/68
28-févr.-13
Client/Serveur
Mariam Tanana 4
Client/Serveur :Evolution : Architectures décentralisées - 1980
2ème génération
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 5/68
28-févr.-13
Client/Serveur
Mariam Tanana 5
Client/Serveur :Evolution : Architectures distribuées - 1990
3ème génération
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 6/68
28-févr.-13
Client/Serveur
Mariam Tanana 6
Client/Serveur :
Principes
Faire fonctionner des applications en réseau ;
Dissocier le développement pur des contraintes
techniques ;Optimiser les performances de l’ application en
définissant des choix techniques judicieux ;
Processus coopérants pour exécuter une tâche ;
…
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 7/6828-févr.-13
Client/Serveur
Mariam Tanana 7
Client/Serveur :
Les acteurs
Caractéristiques principales du client : Consommateurs de services
Proactif : à l’ origine de la commande
Caractéristiques du serveur : Fournisseur de services
Réactif
Traitement de plusieurs clients simultanément Contrôle d’ accès
Garant de l’ intégrité globale
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 8/6828-févr.-13Client/Serveur
Mariam Tanana 8
Qu’est ce que le modèle
Client/Serveur ?
Un système client/serveur est celui qui partage lescaractéristiques spécifiques suivantes : Service : le modèle est surtout une relation entre des processus
tournant sur des machines séparées ;
Partage de ressources : un serveur peut contrôler plusieursclients en même temps et contrôler leur accès aux ressources ;
Asymétrie des protocoles : La relation entre client et serveurest de type plusieurs vers un ;
Transparence à la localisation des processus serveur et client.
Hétérogénéité : multi-plateformes ;
Echange de messages ;
Encapsulation des services ;
Souplesse et adaptabilité ;
…
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 9/6828-févr.-13Client/Serveur
Mariam Tanana 9
Client/Serveur :
Définitions 1/3
On appelle un modèle client/serveur, tout modèle defonctionnement logiciel dans lequel plusieurs programmesautonomes communiquent entre eux par échanges de messages.
Par extension, l'architecture client/serveur définit tout systèmeinformatique en rupture avec le modèle site central/terminauxpassifs.
Ainsi, l'architecture client/serveur permet à une application des'adresser à une autre application, physiquement à distance, àtravers un protocole d'échanges standardisés, pour lui demander deréaliser une tâche pour son propre compte.
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 10/6828-févr.-13Client/Serveur
Mariam Tanana 10
Client/Serveur :
Définitions 2/3
Qu'est-ce qu'un serveur ?
On appelle logiciel serveur un programme qui offre un service sur leréseau. Le serveur accepte des requêtes, les traite et renvoie lerésultat au demandeur.
Pour pouvoir offrir ces services en permanence, le serveur doit êtresur un site avec accès permanent et s'exécuter en permanence.
Qu'est-ce qu'un client ?
On appelle logiciel client un programme qui utilise le service offertpar un serveur. Le client envoie une requête et reçoit la réponse.
Qu'appelle-t-on architecture client/serveur ? C'est la description du fonctionnement coopératif entre le serveur
et le client. Les services Internet sont conçus selon cette architecture.
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 11/6828-févr.-13Client/Serveur
Mariam Tanana 11
Client/Serveur :
Définitions 3/3
Comment identifier un service ? Un site peut offrir plusieurs services. Chacun de ces services est
fourni sur un port de communication virtuel identifié par un
numéro. Ce numéro identifie le service quelque soit le site (ex.le service FTP est offert sur le port numéro 21, TELNET lenuméro 23...).
Quelle est l'API utilisée dans le développement
des applications ? L'API (Application Program Interface) la plus utilisée est l'API
Sockets.
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 12/6828-févr.-13Client/Serveur
Mariam Tanana 12
Client/Serveur :
Le fonctionnement
Le logiciel serveur joue un rôle passif en ce sens qu'il attend desrequêtes provenant des logiciels clients.
Dès qu'il reçoit une requête, il parcourt ses contenus pour trouverl'élément demandé puis le retourne au logiciel client qui l'ademandé.
Quant au logiciel client, on l'utilise pour préparer une requête àadresser vers un serveur.
Lorsque la requête est lancée, une «commande » est acheminée
vers le serveur à consulter. On attend ensuite que le serveur fouilleses contenus, trouve ce qui a été « commandé » puis le retournevers le client demandeur.
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 13/68
Client/Serveur :
Avantages
Unicité de l’ information : toutes les données sontstockées sur un même serveur ;
Meilleure sécurité : simplification des contrôles de
sécurité ;Mise à jours : mise à jour centralisé aussi bien des
données et logiciels ;
Meilleure fiabilité : En cas de panne, seul le serveur fait
l’ objet d’ une réparation ; Facilité d’ évolution : architecture évolutive, il est très
facile de rajouter ou d’ enlever des clients ou des serveurs.
28-févr.-13Client/Serveur Mariam Tanana 13
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 14/68
Client/Serveur :
Inconvénients
Un coût d’ exploitation élevé (bande passante,câbles, ordinateurs surpuissants) ;
En cas de panne du serveur, plus aucun client n’ aaccès aux Informations ;
Si trop de clients veulent communiquer avec leserveur, ce dernier risque de ne pas supporter la
charge.
28-févr.-13Client/Serveur Mariam Tanana 14
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 15/6828-févr.-13Client/Serveur
Mariam Tanana 15
Client/Serveur :
Les composantes
Un dialogue qui repose sur trois éléments : Une couche technique de communication
Un protocole applicatif de communication
Le Middleware
Le Middleware : l’ intelligence du réseau Simplification
Ouverture Indépendance
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 16/6828-févr.-13
Client/Serveur Mariam Tanana 16
Le Middleware
C'est un ensemble de services logiciels construits au dessus d'unprotocole de transport afin de permettre l'échange de requête/ réponseentre le client et le serveur de manière transparente.
Les techniques les plus courantes d'échange d'informations sontl'échange de messages, l'appel de procédures à distance et lamanipulation d'objets à distance.
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 17/6828-févr.-13
Client/Serveur Mariam Tanana 17
Le Middleware (suite)
En général, le middleware : n'est pas visible par l'utilisateur final
est un outil pour le développeur d'applications
se retrouve enfoui dans les applications unifie l'accès à des machines hétérogènes en terme de (CPU,
OS, langage de programmation, représentation des données enmémoire, …)
L’ objectif essentiel du middleware est d
’ offrir auxapplications une interface unifiée permettant l’ accès à
l’ ensemble des services disponibles sur le réseau : l’ API
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 18/6828-févr.-13
Client/Serveur Mariam Tanana 18
Le Middleware : les fonctions
Procédures d’ établissement/ fermeture de connexion ;
Exécution des requêtes, récupération des résultats ;
Initiation des processus sur différents sites ;
Services de répertoire ; Accès aux données à distance ;
Gestion d'accès concurrents ;
Sécurité et intégrité (authentification, cryptage, …) ;
Terminaison de processus ;Mise en cache des résultats, des requêtes ;
…
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 19/6828-févr.-13
Client/Serveur Mariam Tanana 19
Les applications
client/serveur :
Le fonctionnement d'une application client-serveur
Un programme serveur peut gérer, en général, plusieurs requêtes à lafois provenant de clients différents ou identiques.
Un programme client peut, en général, utiliser plusieurs connexionsvers des serveurs différents ou identiques en même temps.
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 20/6828-févr.-13
Client/Serveur Mariam Tanana 20
Les applications
client/serveur : les protocoles
Ces deux machines logiques utilisent un ensemble deprotocoles pour communiquer entre elles.
Ces protocoles sont un ensemble de règles à respecter pour
pouvoir communiquer correctement selon le but recherché. Ce sont les couches hautes qui définissent donc des
protocoles spécifiques à chaque type d'application.
Le protocole applicatif définit :• le format des messages échangés entre les processus émetteur et
récepteur
• les types de messages : requête, réponse, …
• l'ordre d'envoi des messages, …
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 21/6828-févr.-13
Client/Serveur Mariam Tanana 21
Les applications
client/serveur : Exemple
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 22/68
28-févr.-13Client/Serveur
Mariam Tanana 22
Client/Serveur :
Architecture 2-tier
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 23/68
28-févr.-13Client/Serveur
Mariam Tanana 23
Client/Serveur :
Architecture 3-tier
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 24/68
28-févr.-13Client/Serveur
Mariam Tanana 24
Client/Serveur :
Architecture N-tier
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 25/68
28-févr.-13Client/Serveur
Mariam Tanana 25
Client/Serveur : Les
technologies
Les technologies côté client font appel à : du javascript ;
des applets JAVA ;
des composants ActiveX (Microsoft).
Côté serveur, celles qui permettent de faire duWeb dynamiques sont : des scripts CGI (Perl, C, C++) ;
des servlets écrit en JAVA : JSP (Java Server Pages) ;
des traitements en ASP (Active Server Pages) de Microsoft ;
du code PHP ;
Les EJB (Entreprise Java Beans) ; …
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 26/68
28-févr.-13Client/Serveur
Mariam Tanana 26
Exemples d’applications
Client/Serveur
Serveurs de fichiers ;
Serveurs de base de données ;
Serveurs de transactions ; Serveurs de groupeware ;
Serveurs d’ objets distribués ;
Serveurs Web ;…
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 27/68
28-févr.-13Client/Serveur
Mariam Tanana 27
Les services Internet :
Le service d'émulation de terminal ;
Le courrier électronique ;
Le forum électronique ; Le transfert de fichiers ;
Les outils de navigation ;
…
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 28/68
28-févr.-13Client/Serveur
Mariam Tanana 28
Les modes de communication 1/4
Communication en mode non connecté :
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 29/68
28-févr.-13Client/Serveur
Mariam Tanana 29
Les modes de communication 2/4
Caractéristiques :• pas d’ établissement préalable d’ une connexion ;
• adapté aux applications pour lesquelles les réponses aux requêtes des clients sontcourtes (un message) ;
• protocole de transport utilisé : UDP ;
• mode d’ échange par messages : le récepteur reçoit les données suivant le mêmedécoupage que celui effectué par l’ émetteur.
Contraintes :• le client doit avoir accès à l’ adresse du serveur (adresse IP et numéro de port) ;
• pour répondre à chaque client, le serveur doit en récupérer l’ adresse.
Modes de gestion des requêtes : itératif : le processus traite les requêtes les unes après les autres ;
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 30/68
28-févr.-13Client/Serveur
Mariam Tanana 30
Les modes de communication 3/4
Communication en mode connecté :
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 31/68
28-févr.-13Client/Serveur
Mariam Tanana 31
Les modes de communication 4/4
Caractéristiques : établissement préalable d’ une connexion (circuit virtuel) : le client demande au
serveur s’ il accepte la connexion ;
le serveur préserve son état entre deux requêtes ;
fiabilité assurée par le protocole (TCP) ;
après initialisation, le serveur est “passif ” : il est activé lors de l’ arrivée d’ unedemande de connexion du client ;
un serveur peut répondre aux demandes de service de plusieurs clients : lesrequêtes arrivées et non traitées sont stockées dans une file d ’ attente ;
adapté aux échanges ayant une certaine durée (plusieurs messages).
Contraintes : le client doit avoir accès à l’ adresse du serveur (adresse IP, n° de port).
Modes de gestion des requêtes : itératif : le processus traite les requêtes les unes après les autres ;
concurrent : par création de processus fils pour les échanges de chaque requête.
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 32/68
28-févr.-13Client/Serveur
Mariam Tanana 32
Serveur itératif ou concurrent
Serveur itératif : traite séquentiellement les requêtes
adapté aux requêtes qui peuvent s'exécuter rapidement
souvent utilisé en mode non connecté
Serveur concurrent : le serveur accepte les requêtes puis les "délègue" à un
processus fils (traitement de plusieurs clients)
souvent utilisé en mode connecté
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 33/68
28-févr.-13Client/Serveur
Mariam Tanana 33
Service avec ou sans état(s)
Service avec états :
le serveur conserve localement un état pour chacun des clientsconnectés : informations sur le client, les requêtes précédentes, …
Service sans état :
le serveur ne conserve aucune information sur l'enchaînement desrequêtes...
Incidence sur les performances et la tolérance aux pannes dans lecas où un client fait plusieurs requêtes successives :
performance --> service sans état
tolérance aux pannes --> service avec états
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 34/68
28-févr.-13Client/Serveur
Mariam Tanana 34
Les ERP (Entreprise Resource
Planning )
Applications Client/Serveur prêtes à l’ emploi pour différentesfonctions de l’ entreprise.
Les désavantages :
Les ERPs ne sont pas fournis clés en main,
L’ ERP exige un « reengineering » du fonctionnement et de la culturede l’ entreprise.
L’ ERP doit être intégré à l’ environnement informatique existant.
Cependant, les systèmes ERP vous libèrent du développement et dela maintenance des fonctions informatiques les plus terre à terre.En théorie, elles vous laissent donc plus de temps pour traiter lesapplications pointues qui engagent votre société.
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 35/68
28-févr.-13Client/Serveur
Mariam Tanana 35
Exemple d'application
client/serveur
DAYTIME (RFC 867) permet au client d'obtenir la date etl'heure du serveur : dès qu'un serveur reçoit un message d'un client, il renvoie une
chaîne de caractères contenant la date et l'heure, le format de la chaîne renvoyée :
"Weekday, Month Day, Year Time-Zone"
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 36/68
28-févr.-13Client/Serveur
Mariam Tanana 36
Exemple d'application
client/serveur : protocole HTTP
HyperText Transfert Protocol : Défini par le W3C (World Wide Web consortium)
Envoi de documents web d’ un serveur web (serveur
HTTP) vers un client web (navigateur). Principe : Requête du client au serveur : demander une ressource web
(page, image, service) ;
Réponse serveur au client : envoyer une ressource (page web,image, réponse).
HTTP 1.0 (RFC 1945), HTTP 1.1 (RFC 2616) : gère lessessions (permet de garder une connexion).
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 37/68
28-févr.-13Client/Serveur
Mariam Tanana 37
Exemple d'application
client/serveur : protocole HTTP
Référence : RFC 2616 (Request For Comments =/= standard de fait)
Requête client :
Contenu de la requête (type + URI + version protocole) En-têtes
Ligne vide (indique fin de requête)
Réponse serveur :
Code réponse (version HTTP + code + chaine) En-têtes
Ligne vide (indique fin en-tête)
Contenu de la réponse (souvent le document qu’ on veut)
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 38/68
28-févr.-13Client/Serveur
Mariam Tanana 38
Exemple d'application
client/serveur : protocole HTTP
Requêtes GET : demande d’ un document ou d’ un service
POST : demande de service avec envoi de paramètres
HEAD : demande d’ information concernant un document
...
Réponses codées 2xx : succès (200 : ok)
3xx : redirection (304 : document inchangé)
4xx : erreur client (401 : non autorisé, 404 : inexistant)
5xx : erreur serveur (500 : erreur dans l’ exécution d’ un service)
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 39/68
28-févr.-13Client/Serveur
Mariam Tanana 39
Interface de programmation
réseau
Il faut une interface entre l'application réseau et la couchetransport : le transport n'est qu'un tuyau (TCP ou UDP dans Internet)
l'API (Application Programming Interface) n'est que le moyen d'yaccéder (interface de programmation)
Les principales APIs de l'Internet : les sockets :
apparus dans UNIX BSD 4.2,
devenus le standard de fait.
les RPC : Remote Procedure Call - appel de procédures distantes.
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 40/68
28-févr.-13Client/Serveur
Mariam Tanana 40
Interface de programmation
réseau : Les sockets
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 41/68
28-févr.-13Client/Serveur
Mariam Tanana 41
Processus serveur
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 42/68
28-févr.-13Client/Serveur
Mariam Tanana 42
Les sockets
Mécanisme d'interface de programmation permet aux programmes d'échanger des données
n'implique pas forcément une communication par le réseau
Avec les protocoles UDP et TCP, une connexion estentiè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
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 43/68
28-févr.-13Client/Serveur
Mariam Tanana 43
Les sockets : Généralités
Deux processus communiquent en émettant et recevantdes données via les sockets,
Les sockets sont des portes d'entrées/sorties vers le
réseau (la couche transport), Un socket est identifié par une adresse de transport
qui permet d'identifier les processus de l'applicationconcernée,
Une adresse de transport = un numéro de port (identifiel'application) + une adresse IP (identifie le serveur oul'hôte dans le réseau).
L k t Gé é lité
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 44/68
28-févr.-13Client/Serveur
Mariam Tanana 44
Les sockets : Généralités
(suite)
Un socket est une « entité » qui permet à deux processusde communiquer : Les deux processus n'ont pas besoin d'être sur la même machine
Les sockets proposent une communicationbidirectionnelle.
La création d'un socket entre deux processus : crée un « tuyaux » persistant virtuel entre les deux processus si
la communication est orientée connexion,
crée un mécanisme d'envoi de message simplifié si lacommunication entre les deux processus est orientée sansconnexion
L k t Gé é lité
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 45/68
28-févr.-13Client/Serveur
Mariam Tanana 45
Les sockets : Généralités
(suite)
Les sockets permettent de faire communiquer deuxprogrammes qui peuvent : être écrits à l'aide de différents langages (C, Pascal, Fortran,
Java, Perl, Python, Rubby, Lisp, etc.), tourner sur différentes machines (processeurs : compatible
pentium X, Alpha, PowerPC, etc.),
s’ exécuter sur différents OS (Unix (Linux, BSD, Sun Solaris,etc.), Windows, MacOS, etc.)
L k t Gé é lité
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 46/68
28-févr.-13Client/Serveur
Mariam Tanana 46
Les sockets : Généralités
(suite et fin)
Lorsque l'on veut créer un socket sur Internet : on crée un socket s'appuyant sur TCP lorsque l'on veut un
mécanisme de communication orientée connexion,
on crée un socket s'appuyant sur UDP lorsque l'on veut unmécanisme de communication orientée sans connexion.
Remarque : En général on nomme aussi socket le couple adresse IP +
port.
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 47/68
28-févr.-13Client/Serveur
Mariam Tanana 47
Les sockets en C
Créer un socket
Fixer l'adresse
La structure d’ adresse
Communication orientée sans connexion
Communication orienté connexion
Utilisation de fonctions de lecture et d'écriture standard
Autres fonctions
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 48/68
28-févr.-13Client/Serveur
Mariam Tanana 48
La structure de l’adresse
Sachant que chaque protocole a son format d'adresse,struct sockaddr est générique :
struct sockaddr {
u_short sa_family;char sa_data[14]; }
Dans la pratique on utilise des variables dont le type
correspond au protocole qu'on utilise, par exemple :
struct sockaddr_in
AF_LOCAL,AF_INET
L’ adresseproprement
dite
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 49/68
28-févr.-13Client/Serveur
Mariam Tanana 49
La structure de l’adresse
La structure de l’ adresse Internet :
Struct sockaddr_in {
sa_family_t sin_family;
unit16_t sin_port;
struct in_addr sin_addr;
unsigned char sin_zero[8];
}
struct in_addr { uint32_t s_addr }
AF_INET
L’ adresseIP
Le port TCP ou UDP
inutilisé
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 50/68
28-févr.-13Client/Serveur
Mariam Tanana 50
Création d’un socket
Les librairies : #include <sys/socket.h> (sous Unix)
#include <winsock.h> ou <winsock2.h> (sous windows)
Création d ’ un socket :
int socket(int domain, int type, int protocol)
Détermine quellefamille deprotocole va êtreutilisée : Internet
Détermine le typede communication :avec ou sans connexion
Fixe leprotocole qui sera utilisé :TCP ou UDP
Retourne -1si erreur
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 51/68
28-févr.-13Client/Serveur
Mariam Tanana 51
Création d’un socket (suite)
Exemple :int s;s = socket(AF_LOCAL, SOCK_DGRAM, 0);
Table des correspondances :Domain Socket Type Protocol Description AF_LOCAL SOCK_STREAM 0 Socket local avec connexion
AF_LOCAL SOCK_DGRAM 0 Socket local sans connexion
AF_INET SOCK_STREAM IPPROTO_TCP Socket internet basé sur TCP
AF_INET SOCK_DGRAM IPPROTO_UDP Socket internet basé sur UDP
Attention : Il y en a d ’ autres : AF_APPLETALK, SOCK_RAW ... voir
sys/socket.h ou winsock.h
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 52/68
28-févr.-13Client/Serveur
Mariam Tanana 52
Déterminer le destinataire
Une fois que l'on a crée un socket, il faut lui spécifierson adresse :
int bind( int socketID, struct sockaddr *addr, int addrlen)
l ’identifiant desocket valeurretournée par
socket()
longueur en
octets de l ’adresse
Retourne -1
si erreur
adresse du destinataire
Déterminer le destinataire
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 53/68
28-févr.-13Client/Serveur
Mariam Tanana 53
Déterminer le destinataire
(suite)
Exemple :local_addr->sin_family = AF_INET;
local_addr->sin_addr.s_addr = htonl(INADDR_ANY);
local_addr->sin_port = htons(portnum);
bind(s, (struct sockaddr *)local_addr,sizeof(struct sockaddr_in))
Obtenir l’adresse d’un
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 54/68
28-févr.-13Client/Serveur
Mariam Tanana 54
Obtenir l’adresse d’un
socket/de l’appelant
Une fois que l'on a fixé l'adresse d'un socket, elle devient "invisible".
On peut toutefois obtenir les informations la concernant grâce à lafonction getsocketname() :
int getsocketname( int s, struct sockaddr *name, socklen_t *namelen)
Comme il est possible d'obtenir l'adresse associé à un socket, il estaussi possible d'obtenir l'adresse de l'appelant, c'est-à-dire, celui quia initié la connexion, grâce à la fonction getpeername() :
int getpeername( int s, struct sockaddr *name, socklen_t *namelen)
Communication orientée sans
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 55/68
28-févr.-13Client/Serveur
Mariam Tanana 55
Communication orientée sans
connexion
Avantages / aux communications avec connexion: Simple : Pas de connexion à établir entre le client et le serveur,
Rapide,
Possibilité de broadcaster un message.
Inconvénients : Pas fiable,
Pas de séquencement des datagrammes, Une taille maximale pour les messages.
Sans connexion : envoi d’un
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 56/68
28-févr.-13Client/Serveur
Mariam Tanana 56
Sans connexion : envoi d’un
message
Sans connexion : Réception
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 57/68
28-févr.-13Client/Serveur
Mariam Tanana 57
Sans connexion : Réception
d’un message
Sans connexion :
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 58/68
28-févr.-13Client/Serveur
Mariam Tanana 58
Sans connexion :
Fonctionnement de base.
Communication orientée
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 59/68
28-févr.-13Client/Serveur
Mariam Tanana 59
Communication orientée
connexion
Une fois que la connexion a été établie, on ne s'occupepas : des paquets perdus,
des timeouts et des retransmissions, des paquets dupliqués.
L'analogie avec les fichiers est grande :
on établie une connexion avec le socket serveur, on peut transmettre des données (pas de limites de taille),
on ferme la connexion.
Avec connexion : la
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 60/68
28-févr.-13Client/Serveur
Mariam Tanana 60
Avec connexion : la
connexion
Avec connexion : la
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 61/68
28-févr.-13Client/Serveur
Mariam Tanana 61
Avec connexion : la
connexion -> Exemple
char *htoname = "mon_serveur";
struct sockaddr_in to;
struct hostent *toinfo;
toinfo = gethostbyname(htoname);
to->sin_family = AF_INET;
to->sin_addr.s_addr = *(u_long *)toinfo->h_addr[0];
to->sin_port = htonl(portnum);
connect(s,(struct sockaddr *)&to,sizeof(struct sockaddr_in));
Avec connexion : les
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 62/68
28-févr.-13Client/Serveur
Mariam Tanana 62
Avec connexion : les
fonctions listen() et accept()
Avec connexion :
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 63/68
28-févr.-13Client/Serveur
Mariam Tanana 63
Avec connexion :
fonctionnement de base
Avec connexion : les
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 64/68
28-févr.-13Client/Serveur
Mariam Tanana 64
Avec connexion : les
fonctions recv() et read()
cc = recv (s , buffer, taillemax, drapeau ) drapeau permet de configurer la connexion
cc = read (s , buffer, taillemax ) buffer est un pointeur vers la zone de réception.
cc : nombre d'octets réellement reçus.
Avec connexion : les
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 65/68
28-févr.-13Client/Serveur
Mariam Tanana 65
Avec connexion : les
fonctions send() et write()
send (s , buffer, taillemax, drapeau ) drapeau permet de configurer la connexion
write (s , buffer, longueur ) utilisable uniquement en mode connecté (pas d'adresse de
destinataire)
Utilisation des fonctions de
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 66/68
28-févr.-13Client/Serveur
Mariam Tanana 66
Utilisation des fonctions de
lecture et écriture standard
Sur les fichiers, on a : Les fonctions de base : open , read , write , close
Les fonctions « étendues » : fopen , fread , fwrite , fclose , fprintf ,fscanf , fgetc , fgets , etc.
On peut obtenir la même chose sur les sockets de flux : File* fdopen( int socketid, char* modes)
Identifiantde socket Droit d’accès
sur le fichier: r, r+, w,w+
Utilisation de Close et
7/16/2019 Programmation Client Serveur
http://slidepdf.com/reader/full/programmation-client-serveur 67/68
28-févr.-13Client/Serveur
Mariam Tanana 67
Utilisation de Close et
Shutdown
#include <sys/types.h>
#include <sys/sochet.h>
int close(int fildes);
int shutdown(int s, int how);
close ferme un socket. Si ce socket est associé à un protocolegarantissant une transmission fiable (ex : TCP), le système essaied'envoyer les données restantes à envoyer.
shutdown permet de fermer un des deux sens (ou les deux) d'une
connexion full-duplex, suivant la valeur de howto : Si howto=0, la réception est interdite.
Si howto=1, l'émission est interdite.
Si howto=2, l'émission et réception sont interdites.