[..] Envoi/Réception d'un message sur un réseau

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
rougipa
Niveau 2
Niveau 2
Messages : 16
Enregistré le : ven. 14 oct. 2011 20:46
Status : Hors ligne

[..] Envoi/Réception d'un message sur un réseau

#1

Message par rougipa »

Bonjour,

J'ai connecté deux PC (un Windows XP et un Windows Seven) avec un cable croisé pour établir un réseau.

J'aimerais savoir comment envoyer un message du premier au second ordinateur en AutoIt et que le second ordinateur sache l'interpréter.

Par exemple, comment envoyer de PC1 à PC2 le message "Hello World" et que le second PC, une fois le message reçu affiche une message box contenant "Hello World" ?

Je suis assez débutant en AutoIt, et je ne me suis encore jamais interessé à ce qui touche à un réseau.

Si vous pourriez ne serait-ce que m'indiquer le nom de fonctions qui pourraient m'aider (afin que je comprenne leur fonctionnement dans l'aide de Scite), je vous en serais reconnaissant :)

Merci !
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Envoi/Réception d'un message sur un réseau

#2

Message par TT22 »

Salut, j'avais déjà fais ça pour un autre membre du forum (il faut faire plus de recherches) :
Il y a un receveur et un expéditeur, le receveur est lancé en permanence (il recherche si un message a été reçu) et l'expéditeur est à lancer seulement quand vous voulez envoyer un message.
Il fonctionne simplement en créant un fichier dans les documents partagé :wink:

receveur :
► Afficher le texte
expéditeur
► Afficher le texte
Cordialement,
TT22
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Envoi/Réception d'un message sur un réseau

#3

Message par DimVar »

[Reflexe systeme ON]
CHMODer le dossier de partage ;)
[Reflexe systeme OFF]
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Envoi/Réception d'un message sur un réseau

#4

Message par ZDS »

Bonjour,

Passer par des fichiers temporaires pour faire discuter deux ordis me semble être un peu... Bref, autre solution que je trouve plus logique, l'envoi de messages par TCP Send/Recv. Voici les fonctions en question :
- TCPStartup pour lancer le système de communication
- TCPShutdown pour l'éteindre
- TCPListen pour créer une "boîte de reception", un tunnel de communication appelé socket
- TCPAccept pour ouvrir la connexion (entrante) sur la socket (en gros, accepte les receptions)
- TCPConnect pour établir une connexion (sortante) sur une socket (en gros, accepte les envois)
- TCPRecv pour écouter les messages présent dans la socket
- TCPSend pour envoyer des messages sur une socket

Je te prépare un exemple d'ici qq minutes.

A bientôt.

PS: TT22 et DimVar, votre solution ressemble un peu à deux gars qui discutent en face l'un de l'autre, mais au lieu de parler, ils s’envoient des post-its... Aberrant, non? ^^
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Envoi/Réception d'un message sur un réseau

#5

Message par DimVar »

Désolé, je ne vois rien d'aberrant là-dedans.
C'est certes, simpliste et basique, mais compréhensible.
Il s'agit d'un utilisateur qui débute en Autoit et en réseau. (voir son post)
Je ne pense donc pas qu'il faille le noyer dans des notions TCP dés le début (au risque de passer 2 jours à lui expliquer les fondamentaux), mais le laisser découvrir les limites de ce script et lui donner envie d'aller plus loin si besoin.
Ce n'est que mon humble avis. Image
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Envoi/Réception d'un message sur un réseau

#6

Message par ZDS »

Sans être non plus un puriste, je suis en train de créer 2 fonctions : une qui s'appelle sendMsg() pour envoyer un message, l'autre recvMsg pour recevoir un message. Deux fonctions qui auront un code certes un petit peu complexe (même si je considère que ça ne l'est pas, même pour un débutant, car des commentaires suffisent à comprendre comment ça fonctionne), mais qui auront une utilisation très simple.

TCP n'a de compliqué que la théorie. Sans aller dans les détails, c'est quand même simple :
- Celui qui veut recevoir un message, ouvre un tunnel, et regarde ce qui apparaît dedans.
- Celui qui veut envoyer un message, se branche sur le tunnel, et y envoye son blabla.
- Voila.

Scruter un dossier partagé est très lourd et compliqué en comparaison. M'enfin, idem que pour ton choix que je respecte, ce n'est que mon avis personnel.

Sinon, voici un petit fichier, pas encore testé (je le fais dans l'heure de midi, depuis le boulot j'ai rien de fonctionnel). Les trois quarts sont des commentaires pour faire comprendre le code; Le PC d'envoi utilise la fonction sendMsg, le PC de destination utilise la fonction recvMsg (les fonctions avec un _ devant sont là pour aérer et éviter d'avoir des pavés de 4 km de long ^^).
► Afficher le texteEnvoi-Réception.au3
Dans l'absolu, il suffira de mettre #include "Envoi-Réception.au3" dans ton code pour pouvoir faire appel à sendMsg("PC_DESTINATION", "Hello World !", 15000) ; le 15000 correspond à 15 secondes, si le temps est écoulé il stoppe (évitons d'avoir un script qui ne s'arrete plus ^^). Et de faire appel de l'autre coté à recvMsg(15000) ; idem pour le 15000

Je te prépare ça en début d'aprèm après mangé et testé ^^

EDIT: No problem Dimvar. Ce que j'entends par lourd, c'est faire un FileExists en permanence sur un fichier en partage réseau; utiliser le protocole samba pour récupérer les infos d'un dossier partagé, dont 99% d'informations qui ne nous intéressent pas, comme le nom du fichier, sa description, la liste des droits d'utilisateurs, sa date de modification... alors que son contenu de quelques mots reste la donnée que l'on souhaite. Tu déployes et tu mobilises des ressources de façon inutile, que ce soit
- en espace disque (là où la donnée représente une fraction de la taille que prend un fichier)
- ou en réseau (Samba est un protocole sur un modèle client serveur, dans la couche Présentation, qui s'appuye sur ... TCP/IP ! Bah dis donc, deux couches de travail (Présentation et Session) en trop ^^).
- ou en ram/cpu/célensamèrlipopette (fais le test) : Bah oui, mobiliser au moins 3 ports (le 139 et je sais plus les autres), faire tourner un serveur SMB pour traiter les demandes, regénérer la liste des fichiers disponibles à chaque demande (sauf peut-être depuis la version 2, mais sous XP et avant c'est pas génial), etc... ALORS QUE le système que je propose utilise un port et c'est tout... :)

Je ne dis pas que votre système ne marche pas, je dis seulement que c'est complètement inadapté au besoin en question. C'est comme de discuter avec ton voisin de bureau en passant par un système de chat ou par un forum informatique, c'est quand même plus simple de remuer les lèvres (scène excellente de la série Dead Like Me). Sinon, si tu veux pousser la chose au paroxysme, tu as aussi le protocole IPoAC de la RFC 1149. Ca a beau être un poisson d'avril, ça n'en démontre pas moins l'absurdité de certains moyens pour effectuer des tâches simples comme un ping.
Modifié en dernier par ZDS le ven. 17 févr. 2012 12:27, modifié 2 fois.
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Envoi/Réception d'un message sur un réseau

#7

Message par DimVar »

ZDS a écrit :...Scruter un dossier partagé est très lourd et compliqué en comparaison...
Peux tu développer stp ? (pour ma culture personnelle)
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Envoi/Réception d'un message sur un réseau

#8

Message par matwachich »

Sinon, il y a aussi ça, je sais que ça fonctionne en réseau, mais je ne l'ai jamais fait.
Je me pencherai sur leurs (MailSlots) utilisation en réseau dès que j'aurai le temps.
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Envoi/Réception d'un message sur un réseau

#9

Message par ZDS »

Voila, je pense que tu vas apprécier la simplicité du bidule ^^

Voici le code du celui qui envoie :

Code : Tout sélectionner

#Include "Envoi-Réception.au3"
Local $resultat = sendMsg("[color=#BF0000][b]DESTINATAIRE[/b][/color]", "Hello World !")
MsgBox(0, "ENVOI", "Error code : " & @error)
Et maintenant, voici le code de celui qui reçoit :

Code : Tout sélectionner

#Include "Envoi-Réception.au3"
Local $resultat = recvMsg()
MsgBox(0, "RECEPTION", "Error code : " & @error & @CRLF & "'"&$resultat&"'")
Comme quoi, c'est simplissime dans l'utilisation :) Juste à ajouter le script suivant "Envoi-Réception.au3" dans le même répertoire que chaque script (sur les deux pcs).
► Afficher le texteEnvoi-Réception.au3
Contrairement aux scripts de l'aide fournie avec AutoIt, il n'y a pas forcément besoin de lancer le destinataire (serveur) avant l'expéditeur (client).

Tiens moi au courant, à bientôt !

EDIT : Méa Culpa, j'avais oublié un morceau pour fermer proprement la connexion après avoir envoyé le message. Je fais la gu**le quand les gens font du code pas beau ou quand ce n'est pas un minimum fonctionnel, je ferai bien de suivre mes propres conseils ^^
PJ: Archive ZIP comprenant les différents fichiers présentés ici
Envoi-Réception.zip
(1.96 Kio) Téléchargé 65 fois
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
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: [..] Envoi/Réception d'un message sur un réseau

#10

Message par jchd »

Oui Mat, MailSlots !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] Envoi/Réception d'un message sur un réseau

#11

Message par TT22 »

ZDS a écrit :Passer par des fichiers temporaires pour faire discuter deux ordis me semble être un peu...
Peut-être, mais 1 : C'est un script que j'avais fait il y a déjà quelques temps, 2 : quoi qu'on en dise, cette méthode fonctionne :P , 3 : Comme l'as dit DimVar : "Je ne pense donc pas qu'il faille le noyer dans des notions TCP dés le début"
ZDS a écrit :deux gars qui discutent en face l'un de l'autre, mais au lieu de parler, ils s’envoient des post-its...
:lol: J'adore cette comparaison !!!
Cordialement,
TT22
Répondre