68
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 TANANA [email protected] Filière GSTR2

Programmation Client Serveur

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.

7/16/2019 Programmation Client Serveur

http://slidepdf.com/reader/full/programmation-client-serveur 68/68

La structure de l’adresse

http://www.eng.auburn.edu/department/cse/classes/cse605/examples/index.html