[R] TCP multi client

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
sozary
Niveau 6
Niveau 6
Messages : 274
Enregistré le : lun. 20 janv. 2014 19:17
Status : Hors ligne

[R] TCP multi client

#1

Message par sozary »

Bonjour,
Désolé pour ce post, étant donné que vous m'avez porté votre aide en Aide générale...
Voilà, je voudrais créer un serveur capable de gérer la connexion de plusieurs client, or j'ai trouvé ceci:
► Afficher le texte
Malheureusement, étant novice en autoit et n'étant qu'en Terminale et ayant un niveau d'anglais très faible, je n'est vraiment pas beaucoup compris les explications fournis par l'auteur du script... Donc si quelqu'un aurait le temps de soit réécrire le code de façon plus lisible pour un débutant où avec des explications, je lui en serais redevable :)!!
Merci d'avance!
Modifié en dernier par sozary le jeu. 24 juil. 2014 09:56, modifié 1 fois.
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
Avatar du membre
lacnia
Niveau 3
Niveau 3
Messages : 33
Enregistré le : ven. 18 juil. 2014 01:45
Status : Hors ligne

Re: [..] TCP multi client

#2

Message par lacnia »

J'ai commencé à expliquer le début, mais sa m'a complètement endormis, désoler ! Je vous envoi ce que j'ai traduit / expliqué :
► Afficher le texte
Bon je sais que c'est mauvais de faire les choses à moitier, mais sa m'a sérieusement ennuyé xD
Enfin, j'ai aussi arrêté car les fonctions TCP officiels d'autoit sont bof selon moi, je vous conseille de vous pencher du coter des UDF TCP, il y en existe plusieurs ... Ceux de MatwaChich qui est très intéressant !

Mais, si vous débutez, je vous déconseille fortement de commencer par programmer un serveur TCP !
Modifié en dernier par jguinch le mar. 22 juil. 2014 21:14, modifié 2 fois.
Raison : Suppression de la coloration syntaxique + Ajout de la balise Spoiler
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] TCP multi client

#3

Message par jguinch »

Pense à utiliser la balise Spoiler pour le code (histoire de ne pas avoir un ascenseur de 3 km.. Merci :D
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
sozary
Niveau 6
Niveau 6
Messages : 274
Enregistré le : lun. 20 janv. 2014 19:17
Status : Hors ligne

Re: [..] TCP multi client

#4

Message par sozary »

Oui! merci déjà c'est un bon début :D! Mais je n'aime pas trop utiliser les UDF, car c'est pas.. authentique!
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
Avatar du membre
lacnia
Niveau 3
Niveau 3
Messages : 33
Enregistré le : ven. 18 juil. 2014 01:45
Status : Hors ligne

Re: [..] TCP multi client

#5

Message par lacnia »

Hum ... Les UDF sont le plus souvent 10x meilleurs que les fonctions officiels d'autoit, ces derniers offre plus de flexibilité / stabilité.
Ce sont des fonctions améliorer ...
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] TCP multi client

#6

Message par jchd »

[quote="lacnia"Les UDF sont le plus souvent 10x meilleurs que les fonctions officiels d'autoit[/quote]
Tu as quelques exemples ou c'est juste une gentillesse gratuite ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
sozary
Niveau 6
Niveau 6
Messages : 274
Enregistré le : lun. 20 janv. 2014 19:17
Status : Hors ligne

Re: [..] TCP multi client

#7

Message par sozary »

Bon, c'est sûr que les UDF sont très pratique,comme EzMySql, mais bon...
Sinon, pour la function Check(), j'ai réussis à comprendre que le gros du programme se passait ici:
► Afficher le texte
Donc si quelqu'un pourrait me l'expliquer ce serait gentil :D!
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] TCP multi client

#8

Message par blacksoul305 »

Bonjour,

je n'ai pas pris le temps de lire le code que tu as posté, en revanche je t'ai fait un exemple de multiclient (serveur / client) avec les fonction TCP authentiques.

Le client n'est pas du tout optimisé, il ne fait pour ainsi dire rien du tout ne serait-ce que se connecter. Néanmoins j'ai quand même fait l'ossature d'un serveur. Pas très optimisée non plus, l'objectif étant juste de comprendre comment tout fonctionne.
► Afficher le texteServeur
► Afficher le texteclient
Je ne sais pas si tu as lu le tutoriel sur le TCP qui présente quelques bases qu'il faut à tout pris comprendre pour réussir à faire ses propres scripts en TCP ou en tout cas comprendre les explications qui vont suivre.

Explications :

En fait, il est difficile d'imaginer un serveur qui ne supporte pas le multi-client. Que ce soit un serveur de jeu, un serveur de chat, tous les serveurs gèrent la connexion de plusieurs clients. Ce qui implique plusieurs parties et fonctions supplémentaires qui peuvent poser un problème. Essentiellement, un serveur multi-client doit :
  • savoir recevoir plusieurs connexions
  • gérer les déconnexions
  • recevoir et envoyer des données à tous les clients
Recevoir plusieurs connexions :

Un serveur, qu'il supporte le multi-client ou pas, est composé d'une chose importante : le socket d'écoute. C'est la porte d'entrée. L'unique endroit où les ordinateurs peuvent espérer se connecter au programme. Avec AutoIt, si le socket d'écoute est mis en place correctement, il suffit de placer un TCPAccept($socketEcoute) pour avoir l'ID de l'ordinateur connecté et pouvoir dialoguer avec, si jamais il s'est présenté bien sûr. Seulement, il peut y avoir plusieurs connexions se présentant sur le socket d'écoute, pour accepter les différentes connexions, il faut inévitablement intégrer l'acceptation éventuelle d'une connexion, dans la boucle principale du programme. Ou alors appeler cette fonction à intervalle régulier. Du coup, à la place d'avoir :
► Afficher le texteServeur basique
On a
► Afficher le texte
De plus, avoir plusieurs clients implique avoir une liste de ces clients. Tu verras que dans mon code à moi, la liste se présente par un simple tableau à une dimension. Le premier élément représente le nombre de connexions, et le dernier élément une connexion éventuelle qui n'a pas encore été acceptée. Entre les deux éléments, tous les clients qui sont connectés (logiquement).

Gérer les déconnexions :

Dans la configuration que j'ai opté, cela est assez simple. On teste toutes les connexions une par une envoyant des données et en vérifiant si elles ont été bien envoyées. On supprime ou pas l'ID du PC concerné dans le tableau et on obtient à la fin que les clients potentiellement connectés. D'où l'intérêt du tableau de cette forme là. Un tableau à plusieurs dimensions est un peu plus difficile à gérer par exemple.

Recevoir des données, et envoyer :

Pour la réception des données, il suffit soit de choisir sur quel client écouter, soit faire comme on a fait depuis le début, parcourir tous les clients et écouter sur chacun. On agit sensiblement de la même manière pour envoyer.

Finalement, mettre en place tout ça n'est pas le plus compliqué d'après moi. Il suffit seulement de pratiquer, les automatismes se feront au fil des projets TCP que tu entreprendras. Si mon code reste flou malgré tout, n'hésite pas.

Bon courage !
Modifié en dernier par blacksoul305 le jeu. 24 juil. 2014 00:51, modifié 2 fois.
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
lacnia
Niveau 3
Niveau 3
Messages : 33
Enregistré le : ven. 18 juil. 2014 01:45
Status : Hors ligne

Re: [..] TCP multi client

#9

Message par lacnia »

jchd a écrit :[quote="lacnia"Les UDF sont le plus souvent 10x meilleurs que les fonctions officiels d'autoit
Tu as quelques exemples ou c'est juste une gentillesse gratuite ?[/quote]

Hum d'accord, juste pour exemple :
Compare les fonctions officiel GUICrealelistview ( en rapport avec list view ) et l'UDF ControlListView proposants une vingtaine de fonctions par rapport aux listview comme par exemple _GUICtrlListView_SetExtendedListViewStyle ....

Pareille pour le TCP, cherche sur le forum un UDF tcp et compare le aux 5 fonctions autoit officiel TCP :)
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] TCP multi client

#10

Message par jchd »

Les UDFs dont tu parles sont "officielles" en ce sens qu'elles sont maintenues par l'équipe et distribuées de concert avec le reste d'AutoIt et ses outils.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
sozary
Niveau 6
Niveau 6
Messages : 274
Enregistré le : lun. 20 janv. 2014 19:17
Status : Hors ligne

Re: [..] TCP multi client

#11

Message par sozary »

Cher blacksoul305,
J'ai en effet lus ton tutoriel, c'est grâce à cela que j'ai réussis à créer le début du serveur, mais je n'avais pas assez de pratique pour faire un serveur multi-client.
Certaines lignes de codes restent floues, j'ai donc détaillé un peu ton code, pourrais-tu me dire si ces détails sont exacts? Et à un moment je n'ai pas compris 2 lignes, donc pourrais-tu me les expliquées svp? Merci quand même pour ce que tu as déjà fais!
► Afficher le texte
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] TCP multi client

#12

Message par blacksoul305 »

Bonsoir,

j'ai rajouté les commentaires dans mon message précédent pour comprendre un peu mieux le code, en espérant que cela va t'aider.
J'insiste, le code n'est pas super bien optimisé, y a des lignes que l'on peut supprimer, j'ai fait en sorte d'avoir un code simple et dégagé pour voir clairement la démarche. Ce n'est pas du tout un exemple type.

Bon courage !
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
sozary
Niveau 6
Niveau 6
Messages : 274
Enregistré le : lun. 20 janv. 2014 19:17
Status : Hors ligne

Re: [..] TCP multi client

#13

Message par sozary »

Merci! C'est bon, tout est clair là! Oui, après je pourrais apporter quelques modifications quand je coderais ça de façon banale et sans réfléchir! Sujet résolu, merci de votre aide à tous!
"Là où la volonté est grande, les difficultés diminuent.", Niccolò Machiavelli
Répondre