Windev socket
Cours : Windev socket. Rechercher de 53 000+ Dissertation Gratuites et MémoiresPar pddu18 • 20 Décembre 2018 • Cours • 1 713 Mots (7 Pages) • 835 Vues
COURS WINDEV NUMERO 5
Rappels de notions réseaux, Tcp/ip, Ports
Études des Sockets, communication répartie
Cours Windev numéro 5
Page 1 sur 7
Cours Windev numéro5
V E R S I O N 1 9
Grâce à ce nouveau Tp nous allons rentrer dans le mo
nde merveilleux de la communication distante via
réseau. Cette jolie introduction pour vous faire compre
ndre que ce support va vous apprendre à faire
discuter 2 (ou plusieurs) ordinateurs entre eux. Nous a
llons employer les Sockets et les threads.
Commençons par définir ces 2 termes :
Les Sockets : (Tous ceux qui pensent à une chaussette s
ont virés) Une Socket est définie comme une
extrémité d’une communication.
Une paire de processus (ou de Threads) communiquant
sur un réseau emploie une paire de sockets, une
pour chaque processus. Une socket est constituée d’un
e adresse IP concaténée à un numéro de port. En
général les sockets utilisent une architecture Client/S
erveur. Le serveur attend des requêtes entrantes du
client en écoutant un port spécifique. Dès réception
d’une requête, il accepte une connexion de la socket
du client. Les serveurs implémentant des services pa
rticuliers (par exemple, telnet, ftp, mail, http), écoutent
des ports bien connus (Telnet écoute le port 23, un s
erveur ftp le port 21, un serveur web [ Http ] le port
80 ). Les ports inférieurs à 1024 sont considérés com
me connus et sont utilisables pour les services stan
dards.
Lorsqu’un thread client commence une requête de conne
xion, il se voit assigner un port par la machine hô
te.
Ce port est un nombre supérieur à 1024.
Par exemple, lorsqu’un client de l’hôte X d’adresse
Ip 192.168.5.20 souhaite établir une connexion avec
un serveur Web (qui écoute le port 80) d’adresse 192.
168.6.10, l’hôte X peut se voir affecter le port
1625. La connexion est constituée d’une paire de sock
ets : (192.168.5.20 : 1625) sur l’hôte X et
(192.168.6.10 : 80) sur le serveur Web.
Un thread peut être perçu comme un flot de contrôle à
l’intérieur d’un processus. Dans notre cas il
joue le rôle d’interface entre les 2 ordinateurs, inter
ceptant les données transmises.
Notre exercice consistera à créer 2 exécutables, un cl
ient et un serveur. Le serveur sera en attente de
réception de message et le client essayera de se con
necter au serveur et de lui envoyer des messages.
Pour cela il nous faudra 2 projets un pour le client,
un pour le serveur
Je vous rappelle que plus on avance au fil des supp
orts moins je détaille les fonctionnalités que je consi
dère
comme devant être acquises. Donc si à ce stade vous é
prouvez des difficultés reprenez les cours précédent
s.
Nous montons en gamme en terme d’expertise donc il est
probable que vous éprouverez certaines
difficultés sur ce support. Restez motivé et recommence
z le autant de fois que nécessaire. Le but étant de
le réaliser sans avoir recours à ce support.
Cours Windev numéro 5
Page
2
sur
7
PARTIE SERVEUR
Vous allez commencer par créer un nouveau projet nom
mé «
Serveur
». Nous ne travaillerons pas sur des
fichiers donc faites en sorte de n'utiliser aucune an
alyse. Nous n’aurons besoin que d’une fenêtre que vo
us
nommerez «
Depart
» et qui sera la première fenêtre du projet. Faites en
sorte qu’elle ressemble à celle-
ci :
Cette zone est destinée à
recevoir le numéro du port
d’écoute. C’est un objet
champ de saisie que vous
nommerez «
portip
»
Ces
2
boutons
seront
nommés
«
demarre
» et «
arrete
». A vous de
choisir qui est qui.
Ici s’afficheront les phrases envoyées
par le client. C’est un objet liste que vous
nommerez «
liste1
»
Analysons le fonctionnement du serveur :
Cette zone de texte nous indiquera si le
serveur est actif ou pas. C’est un objet
champ de saisie que vous nommerez
«
etatserveur
»
Il faut lui donner un port a écouter.
Il faut lancer la boucle d’écoute ( boucle infinie )
et faire en sorte que les événements d’entrés ( demande
de connexion...) soient traités par des threads.
Une fois la connexion acceptée le texte recu sera insc
rit dans la liste déroulante.
Retroussons nos manches et en avant pour le codage.
Nous allons commencer par créer une procedure
d’attente ( la boucle d’écoute ). Pour cela créez une pro
cédure globale nommée “
attente
”
Cours Windev numéro 5
Page
3
sur
7
Voici le code que nous allons analyser.
Vous pouvez constater que nous nous trouvons devant un
e boucle sans fin ou en attente dite active. A
l’intérieur de cette boucle une fonction WinDev ( Socke
tAttendConnexion ), est chargée de verifier si des
demandes de connexion se produisent. Comme parametre
cette fonction prend un argument qui est le nom
de la socket ici “serveur”. Ne vous inquietez pas po
ur l’instant, vous allez voir ou nous allons définir
la
socket nommée “serveur”. Pour l’instant l’essentiel e
st de comprendre le principe de la boucle d’attente
active. Donc si une demande de connexion se produit
pour la socket “serveur” on l’accepte en créant un
canal de communication. Vous pouvez considérer ce ca
nal comme un tunel ou les données vont transiter.
La ligne : ThreadExécute(“threadcnx”,threadNormal,"
affichemes",canal), est chargée de faire en sorte que
le code de la fonction affichemes soit executée comme
un Thread normal appelé “threadcnx” utilisant le
parametre “canal”)
Multitache(-30) : L'exécution de l'application est susp
endue durant
D'autres traitements peuvent être exécutés durant cette p
ériode de temps (ré-affichage ou exécution d'un
code de clic par exemple). Dans notre cas la boucle
est gelée pour permettre aux threads de s’exécuter
durant leurs quantums.
Donc : la socket s’appelle « serveur », le canal cr
ée s’appelle canal, le thread gestionnaire se nomme
« threadcnx ».
J’admets qu’au premier abord cela puisse vous sembl
er complexe, alors que c’est extrêmement logique.
Relisez le paragraphe précédent et imaginez le fonc
tionnement : la boucle sans fin, l’attente de connexio
n,
le traitement de la connexion....
Maintenant nous allons nous intéresser à la procédur
e « affichemes ».C’est elle le cœur de notre serveur
puisque c’est la gestionnaire d’événement. Pour ce f
aire créez une procédure globale « affichemes »
(affichemes pour affiche messages).
PROCEDURE attente()
BOUCLE // début de la boucle
SI SocketAttendConnexion("serveur") ALORS // si une
demande de connexion est en attente
canal est une chaîne
canal=SocketAccepte("serveur") //Cette fonction per
met de créer le canal de communication entre
la socket serveur et la socket cliente.
ThreadExécute(“threadcnx”,threadNormal,"affichemes"
,canal) //Lance l'exécution d'un "thread"
Multitache(-30) //La fonction Multitache avec un ne
...