Étude des Sockets Par Jean Luc Baptiste Date de publication : 27 novembre 2008

Étude des Sockets Par Jean Luc Baptiste Date de publication : 27 novembre 2008 Étude des Sockets. Faire communiquer deux ou plusieurs ordinateurs ensemble. Révison des Sockets, Adresse Ip, Ports… ♪ Étude des Sockets par Jean Luc Baptiste I - Présentation............................................................................................................................................................ 3 II - Partie Serveur........................................................................................................................................................ 3 III - Partie Cliente.........................................................................................................................................................5 IV - Exercices applicatifs............................................................................................................................................. 6 - 2 - Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2008 Jean Luc Baptiste. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. https://wind.developpez.com/tutoriels/windev/etude-socket/ Étude des Sockets par Jean Luc Baptiste I - Présentation Objectifs : études des Sockets, communication répartieRappels de notions réseau, Tcp/ip, Ports. Grâce à ce nouveau Tp nous allons rentrer dans le monde merveilleux de la communication distante via réseau. Cette jolie introduction pour vous faire comprendre que ce support va vous apprendre à faire discuter deux ( ou plusieurs ) ordinateurs entre eux. Nous allons employer les Sockets et les threads. Commençons par définir ces deux termes. Les Sockets : (tous ceux qui pensent à une chaussette sont 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'une adresse IP concaténée à un numéro de port. En général les sockets utilisent une architecture Client/Serveur. 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 particuliers (par exemple, telnet, ftp, mail, http), écoutent des ports bien connus (telnet écoute le port 23, un serveur ftp le port 21, un serveur web [ Http ] le port 80). Les ports inférieurs à 1024 sont considérés comme connus et sont utilisables pour les services standard. Lorsqu'un thread client commence une requête de connexion, 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 sockets : (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 deux ordinateurs, interceptant les données transmises. Notre exercice consistera à créer deux exécutables, un client et un serveur. Le serveur sera en attente de réception de message et le client essayera de se connecter au serveur et de lui envoyer des messages. Pour cela il nous faudra deux projets un pour le client, un pour le serveur. Je vous rappelle que plus on avance au fil des supports moins je détaille les fonctionnalités que je considère comme devant être acquises. Donc si à ce stade vous éprouvez des difficultés reprenez les cours précédents. Nous montons en gamme en terme d'expertise donc il est probable que vous éprouverez certaines difficultés sur ce support. Restez motivé et recommencez-le autant de fois que nécessaire. Le but étant de le réaliser sans avoir recours à ce support. II - Partie Serveur Vous allez commencer par créer un nouveau projet nommé « Serveur ». Nous ne travaillerons pas sur des fichiers donc faites en sorte de n'utiliser aucune analyse. Nous n'aurons besoin que d'une fenêtre que vous nommerez « Depart » et qui sera la première fenêtre du projet. 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 deux boutons seront nommés « demarre » et « arrete ». À 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 ». Cette zone de texte nous indiquera si le serveur est actif ou pas. C'est un objet champ de saisie que vous nommerez « etatserveur » Analysons le fonctionnement du serveur : - 3 - Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2008 Jean Luc Baptiste. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. https://wind.developpez.com/tutoriels/windev/etude-socket/ Étude des Sockets par Jean Luc Baptiste • il faut lui donner un port à écouter ; • il faut lancer la boucle d'écoute ( boucle infinie ) et faire en sorte que les événements d'entrées (demande de connexion.) soient traités par des threads ; • une fois la connexion acceptée le texte reçu sera inscrit dans la liste déroulante. Retroussons nos manches et en avant pour le codage. Nous allons commencer par créer une procédure d'attente (la boucle d'écoute). Pour cela, créez une procédure globale nommée « attente ». Voici le code que nous allons analyser. other 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 permet 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 négatif suspend l'application FIN FIN Vous pouvez constater que nous nous trouvons devant une boucle sans fin ou en attente dite active. À l'intérieur de cette boucle une fonction WinDev ( SocketAttendConnexion ), est chargée de vérifier si des demandes de connexion se produisent. Comme paramètre cette fonction prend un argument qui est le nom de la socket ici « serveur ». Ne vous inquiétez pas pour l'instant, vous allez voir ou nous allons définir la socket nommée « serveur ». Pour l'instant l'essentiel est 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 canal comme un tunnel 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 suspendue durant <Temporisation> 100e de seconde. 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éé s'appelle canal, le thread gestionnaire se nomme « threadcnx ». J'admets qu'au premier abord cela puisse vous sembler complexe, alors que c'est extrêmement logique. Relisez le paragraphe précédent et imaginez le fonctionnement : la boucle sans fin, l'attente de connexion, le traitement de la connexion.. Maintenant nous allons nous intéresser à la procédure « affichemes ». C'est elle le cours de notre serveur puisque c'est la gestionnaire d'événement. Pour ce faire, créez une procédure globale « affichemes » (affichemes pour affiche messages). PROCEDURE affichemes(canal) texte est une chaîne BOUCLE texte=SocketLit(canal,Vrai) ListeAjoute("liste1",texte) FIN ThreadArrête("",500) Multitache(-30) Comme vous pouvez le constater, la procédure prend comme paramètre le nom du canal reliant les deux sockets. Je vous rappelle que cette procédure est lancée en temps que thread. lit le contenu du canal et le mets dans la - 4 - Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2008 Jean Luc Baptiste. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. https://wind.developpez.com/tutoriels/windev/etude-socket/ Étude des Sockets par Jean Luc Baptiste variable texte. Le paramètre vrai signifie à SocketLit que la durée d'attente sur canal est indéfinie. Une fois le message récupéré il doit être mis dans notre liste déroulante « liste1 ». Le reste de la procédure n'appelle pas de commentaires particuliers. Continuons par le code du bouton « demarre ». SI PAS SocketCrée("serveur",PORTIP,NetAdresseIp()) ALORS Erreur("Erreur de uploads/S4/ xmlwdco-5.pdf

  • 34
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Mai 05, 2022
  • Catégorie Law / Droit
  • Langue French
  • Taille du fichier 0.2113MB