You are on page 1of 8

Outils Informatique pour lingnieur

TD 1

Rseau et Web
IP, Client/serveur

1 Programmation Client/Serveur base sur TCP/IP


1.1 Buts de cette ralisation
Ce TP sur la programmation client/serveur a pour but :
ltude du fonctionnement dune application de type client/serveur,
la mise en uvre dun protocole de communication bas sur TCP/IP.

1.2 Quelques explications sur la programmation dune application de type


client/serveur
Larchitecture de type client/serveur est lune des architectures
logicielles les plus utilises pour faire communiquer des ordinateurs distants
travers un rseau. Il sagit de dfinir un ordinateur comme tant le serveur,
cest dire quil est lcoute des requtes dun ou plusieurs ordinateurs appels
clients.
Afin de faire communiquer deux machines, il faut dune part quelles soient
connectes via un rseau, et dautre part quelles utilisent un protocole commun.
Nous utiliserons dans le cadre de ce TP le protocole de communication TCP/IP,
qui est le plus utilis dans le monde (notamment par internet), et nous dfinirons
un protocole application qui permettra au serveur et aux clients de communiquer.

1.3 Dfinition de lapplication


Un serveur mesure des tempratures et les envoie sur demande aux
clients.
Le serveur se met lcoute du port 12512, que nous choisissons
arbitrairement (la rgle gnrale est dviter les ports de numro faible pouvant
tre rservs des applications standards telles http sur le port 80, le mail sur
le port 25,). Il est alors prt recevoir une connexion. Ds quun client se
connecte ce port, le serveur lui envoie une ligne de texte, termine par un
retour chariot
, afin de sidentifier. Par exemple il peut envoyer Mon
protocole v1.0 . Le client sait alors que le serveur est prt et quils vont pouvoir
dialoguer suivant le protocole tabli.
Le serveur, de son ct, se met lcoute des ordres du client : sil reoit
la ligne de texte read
(dans le protocole choisi, les informations circulent
sous la forme de lignes de textes se terminant par un retour chariot
), il
envoie sa dernire mesure de temprature (aprs lavoir transforme de nombre
flottant en texte), puis il se met nouveau en attente. Sil ne reoit pas de

commande pendant 2 secondes, ou bien sil reoit autre chose que read
, il
ferme la connexion et se retrouve de nouveau en attente sur le port 12512.
Lapplication client, quant elle, permet lutilisateur de saisir ladresse
dun serveur, et lui demande un relev de temprature toutes les 50
millisecondes. Il affiche alors les tempratures reues dans un graphe. Lorsque
lutilisateur souhaite arrter les mesures, le client envoie la ligne quit
au
serveur. Daprs le protocole, le serveur fermera alors lui aussi sa connexion car
la ligne est diffrente de read
.

Programmer le serveur : sa fonction est dcouter le port 12512,


puis dcrire la ligne Mon protocole v1.0
ds quil reoit une
demande de connexion. Attention, le protocole est sensible la
casse (majuscules/minuscules).
Puis, en boucle, il lit le port TCP :
Si lordre read
lui est envoy, alors il envoie au client une
mesure de temprature termine par
.
Si il attend 2 secondes sans ordre ou bien sil reoit autre chose
que read
, il sort de la boucle.
La boucle se termine si il reoit autre chose que read
, si il y
a une erreur TCP, si le serveur attend 2 secondes, ou bien si
lutilisateur appuie sur un bouton stop. A la fin de la boucle, le
serveur ferme la connexion et se retrouve nouveau en attente sur
le port 12512
La face avant de ce VI est donne ci-dessous :
Indicateur

Figure 4.1: Face avant du serveur

Programmer le client : sa fonction est de se connecter sur le port


12512 du serveur choisi par lutilisateur. Aprs avoir vrifi quil se
trouve bien en communication avec un serveur du protocole dsir
(lecture de la ligne Mon protocole v1.0
), il envoie la commande
read
toutes les 50 millisecondes.
Lorsque lutilisateur clique sur un bouton Fermer la connexion , le
client envoie le texte quit
au serveur et ferme la connexion.
La boucle du client se termine donc sur erreur TCP ou sur lappuie
du bouton stop.
La face avant de ce VI est donne ci-dessous :

Commande

Figure 4.2: Face avant du client

Graphe droulant
Lorsque tout fonctionne, rflchir la gestion des erreurs qui
peuvent tre nombreuses (fermeture intempestive de la connexion,
mauvais protocole, client ou serveur bogu,) et y proposer des
solutions : dlai maximal dattente, gestion de la variable status de la
sortie erreur des vi grant TCP.
Paralllement cela, tester son client avec le serveur du binme
voisin, et vice-versa.

1.4 Quelques vi utiles

Gestion des erreurs

Les erreurs sont prsentes sous la forme


dun
cluster
(quivalent
dun
type
enregistrement ou record en Ada) compos
dun boolen vrai si il y a une erreur, dun code
derreur, et dun texte. Afin de savoir si une
erreur a eu lieu, il suffit donc de tester le
champs status du cluster derreur. Pour
accder ce champs, on utilise le vi
Dsassembler par nom du menu Cluster.

TCP Crer un auditeur

Menu : Communication
9 TCP

TCP
Attendre
auditeur

Prpare le programme se mettre en


attente de connexion sur le port spcifi:
- port : numro du port prparer
- ID de lauditeur: identificateur de
lauditeur utilis par le vi dcoute TCP
- adresse distance : adresse de la
machine ayant demand la connexion
- sortie derreur : cluster contenant des
informations sur le fonctionnement du vi. Si
il y a eu une erreur, son composant Status
vaut vrai en sortie, faux sinon.

un

Menu : Communication
9 TCP

Se met en attente dune connexion sur le


port de lauditeur :
- ID dauditeur dentre : identificateur de
lauditeur sur lequel se mettre en attente
- rsoudre ladresse distance : si vrai, le
vi utilise un DNS pour tenter dobtenir
ladresse alphanumrique du client, si faux,
cest ladresse IP du client qui figure dans
ladresse distance.
- timeout (-1) : ce vi provoquant une
attente potentiellement infinie (si absence
de demande de connexion), il est possible de
borner lattente dans le temps
- ID de connexion: identificateur de
connexion utilis par les autres vi utilisant
TCP.
- adresse distance : adresse de la
machine ayant demand la connexion
- sortie derreur : cluster contenant des
informations sur le fonctionnement du vi. Si
il y a eu une erreur, son composant Status
vaut vrai en sortie, faux sinon.

Ouverture
dune
connexion sur un port
TCP distant
Menu : Communication
9 TCP

Ouvre une connexion TCP sur le port spcifi


du serveur spcifi:
- adresse : adresse du serveur
- port : port du serveur sur lequel se
connecter
- timeout : idem TCP Attendre un auditeur
- id de connexion : identificateur de la
connexion cre utilis par les autres vi TCP
- sortie derreur : idem TCP listen

Lecture sur un port TCP


ouvert

Menu : Communication
9 TCP

Utilisation typique en mode


CRLF

Ecriture sur
TCP ouvert

un

port

Menu : Communication
9 TCP

Utilisation typique en mode


CRLF

Fermeture
connexion TCP

Tente de lire sur une connexion TCP:


- id de connexion : identificateur de la
connexion (provient de TCP Listen ou de TCP
Open Connexion)
- octets lire : choisir 1024. Nombre
doctets que le vi cherche lire, si on ne
met rien, ce vi ne lit rien !!!
- timeout (-1) : idem TCP Listen
- mode (standard) : choisir le mode CRLF.
En mode CRLF, lit une ligne jusquau
prochain retour chariot
- id de connexion de sortie : identificateur
de connexion utiliser pour des oprations
ultrieures sur la connexion, possde la
mme valeur que id de connexion.
- sortie de donnes : chane de caractres
lue (attention, en mode CRLF, elle se
termine normalement par
)
- sortie derreur : idem TCP Listen

dune

Tente dcrire sur une connexion TCP:


Les entres/sorties de ce vi sont similaires
TCP read.
- entre de donnes : chane de caractre
envoyer. Attention, si lon a choisi le mode
CRLF, il faut penser insrer un retour
chariot
la fin.

Menu : Communication
9 TCP

Ferme une connexion TCP:


- id de connexion : identificateur de la
connexion

Conversion dune chane


en rel
Menu : Chanes
9 Conversions chanenombre

chane
:
chane
de
caractres
reprsentant un nombre au format ingnieur
- nombre : nombre rsultant de la
conversion de chane

Conversion dun rel en


chane
Menu : Chanes
9 Conversions chanenombre

Concatnation
chanes

Menu : Chanes

Fonction inverse de formatage


- nombre : rel convertir
- chane au format ingnieur : chane de
caractres image du rel en entre

de

Concatne (met bout bout) des chanes de


caractres. Ce vi est dimensionnable
(comme assembler un tableau)

Le calcul de la temprature sera fictif et bas sur un vi de simulation :


Menu Tutorial
Thermomtre numrique.vi

2 Adressage IP et masque de sous-rseau


Un site local est compos de deux sous-rseaux physiques, relis au reste du monde via
une mme passerelle. Ce site possde une unique adresse IP : 189.44.0.0.
Quelle est la classe de cette adresse ?
Proposez, en utilisant la notion de masque de sous-rseau, un mode dadressage des
diffrentes stations sur le site pour que la passerelle nait pas diffuser
systmatiquement sur chacun des deux sous-rseaux tous les messages reus du reste
du monde.
Proposez un mode dadressage de lIMP jouant le rle de passerelle.

You might also like