[..] TCP host/guest
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[..] TCP host/guest
Bonjour,
Je souhaiterais faire communiquer la machine hôte et virtuelle par le biais des fonctions TCP
hôte<-> privé en réseau privé sous virtualbox
Vincent
Je souhaiterais faire communiquer la machine hôte et virtuelle par le biais des fonctions TCP
hôte<-> privé en réseau privé sous virtualbox
Vincent
Modifié en dernier par Vincent31 le jeu. 01 mars 2012 20:17, modifié 2 fois.
- ZDS
- 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: [...] script pour communiquer entre host et guest
Bonjour,
Dans le but de t'aider plus facilement, ça serait plus simple d'avoir le script de départ. Est ce que le script sur la VM doit communiquer avec la machine hôte ? ou bien juste lui envoyer des infos ? Parce que sinon dans le script que tu as déjà, tu risques d'avoir beaucoup de modifs dans ton code pour des gestions concurrentes de files de messages.
Dans tous les cas , tu trouveras ton bonheur avec les fonctions TCP/UDP Send/Recv. Regarde l'aide de chaque fonction, ça devrait te dépanner.
Avec ton code, je t'apporterai plus d'aide (et aussi surtout parce que ton script me fait beaucoup penser à un bot multi-comptes distribué sur différentes VMs, un concept que j'avais traité il y a des années et qui est totalement interdit par ce forum).
A bientôt !
PS: Quand je dis "communiquer", je parle de communication au sens langage, c'est à dire des envois d'infos dans les deux sens.
EDIT: Ton script peut aussi être tout à fait légal; j'ai tendance à être assez parano, mais si tu n'as rien à cacher, tu comprendras mon point de vue.
Dans le but de t'aider plus facilement, ça serait plus simple d'avoir le script de départ. Est ce que le script sur la VM doit communiquer avec la machine hôte ? ou bien juste lui envoyer des infos ? Parce que sinon dans le script que tu as déjà, tu risques d'avoir beaucoup de modifs dans ton code pour des gestions concurrentes de files de messages.
Dans tous les cas , tu trouveras ton bonheur avec les fonctions TCP/UDP Send/Recv. Regarde l'aide de chaque fonction, ça devrait te dépanner.
Avec ton code, je t'apporterai plus d'aide (et aussi surtout parce que ton script me fait beaucoup penser à un bot multi-comptes distribué sur différentes VMs, un concept que j'avais traité il y a des années et qui est totalement interdit par ce forum).
A bientôt !
PS: Quand je dis "communiquer", je parle de communication au sens langage, c'est à dire des envois d'infos dans les deux sens.
EDIT: Ton script peut aussi être tout à fait légal; j'ai tendance à être assez parano, mais si tu n'as rien à cacher, tu comprendras mon point de vue.
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 !
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Re: [...] script pour communiquer entre host et guest
Alors elle doit communiquer .
Je vais regarder ces fonctions !
Non pas de soucis c'est simplement un programme de simulation du trafic routier (maths spé power
) la fluidité variant du vert au rouge.
En fait je souhaites simplement que lorque la simulation est terminé (on sort de la boucle) je puisse avoir marquée "simulation terminée avec succes" ou en cas d'arret forcé "échec de la simulation" sur un GUI de la machine hote
Je souhaites égalemnt pouvoir forcer l'arret d'une simulation depuis ce GUI et en lancer une.
Je vais regarder ces fonctions !
Non pas de soucis c'est simplement un programme de simulation du trafic routier (maths spé power
En fait je souhaites simplement que lorque la simulation est terminé (on sort de la boucle) je puisse avoir marquée "simulation terminée avec succes" ou en cas d'arret forcé "échec de la simulation" sur un GUI de la machine hote
Je souhaites égalemnt pouvoir forcer l'arret d'une simulation depuis ce GUI et en lancer une.
Re: [..] script pour communiquer entre host et guest
mmm je viens de regarder ces fonctions ça me parait un peu trop compliqué pour le temps que je peux y passé.
Soit je me contente du fichier excel soit je trouve un moyen de ce que je voulais faire au début c'est à dire :
ce que je fais aujourd'hui :
la voiture est assimilé à un point de couleur qui avance de tant de pixels toutes les tant millisecondes et en fait mon pixelgetcolor regarde combien de voitures passe par ce point et à quelle différence de temps.
ce que je voualit faire au début mais qui n'a pas fonctionnné et qui m'éviterait le pixelgetcolor et donc la vm:
c'est d'avoir une variable $voitureX mais je n'arrive pas à créer de tels variables c'est à dire qu'à chaque fois qu'une voiture (variable) est générée elle prenne le nom de voiture1 puis voiture2 ...
ce qui me permettrait de soustraire la postion de la voiture2 à la voiture1 etc..
Soit je me contente du fichier excel soit je trouve un moyen de ce que je voulais faire au début c'est à dire :
ce que je fais aujourd'hui :
la voiture est assimilé à un point de couleur qui avance de tant de pixels toutes les tant millisecondes et en fait mon pixelgetcolor regarde combien de voitures passe par ce point et à quelle différence de temps.
ce que je voualit faire au début mais qui n'a pas fonctionnné et qui m'éviterait le pixelgetcolor et donc la vm:
c'est d'avoir une variable $voitureX mais je n'arrive pas à créer de tels variables c'est à dire qu'à chaque fois qu'une voiture (variable) est générée elle prenne le nom de voiture1 puis voiture2 ...
ce qui me permettrait de soustraire la postion de la voiture2 à la voiture1 etc..
- ZDS
- 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: [..] script pour communiquer entre host et guest
En fait c'est sans doute plus simple que tu ne le penses (on va appeler serveur le script sur ta machine hote, et client un script sur ta vm) :
Le client peut envoyer / recevoir quels types de messages ? Une fois que tu as ça, tu n'as plus qu'à traiter les messages dans ta boucle principale sur le client, idem sur le script du serveur.
Je te conseille des messages très courts et ciblés : mot-clé de 8 caractères maxi & "#" & paramètres séparés par ";" si besoin, et un dernier # pour une réponse au message.
Genre le serveur envoie "SHUTDOWN#5" pour une extinction du client dans 5 secondes.
le client renvoie alors "SHUTDOWN#5#OK" si il est d'accord, et s'éteint.
Le serveur voit la réponse et affiche un message disant que l'ordre a bien été reçu et bien été traité.
Autre exemple :
Le client envoye "PIXEL#FF0000;3" au serveur pour dire que le feu 3 est passé au rouge.
Le serveur enregistre l'info, et retourne "PIXEL#FF0000;3#KO" au client, car il est occupé à autre chose.
Le client reçoie la réponse et réessaye "PIXEL#FF0000;3" au serveur 5 secondes plus tard.
Le serveur est dispo et renvoye "PIXEL#FF0000;3#OK" et affiche un message à l'écran pour dire que le feu 3 est passé au rouge.
Le client a reçu "PIXEL#FF0000;3#OK" et continue donc son boulot.
Somme toute, le souci, c'est de connecter les différents clients au serveur. une fois que c'est fait, le reste n'est que de la logique distribuée.
Et encore, c'est encore plus simple si tu n'as qu'un seul client à gérer à la fois. Dépose tes scripts, je peux t'aider là dessus sans trop de souci (par contre, je ne pourrai te donner un coup de main que pendant la journée).
A bientôt !
PS: Le truc le plus simple, c'est carrément de faire en sorte qu'à chaque fois qu'on a un message à envoyer, il soit mis dans un array. En parallèle, une fonction traite cette liste et envoye les messages au destinataire. Une autre fonction lit les messages d'arrivée, et dès qu'on a fait un tour de boucle, on regarde les messages en entrée. Ainsi ton programme sera très peu impacté par le système de communication. Ca semble barbare comme ça, mais je t'assure qu'avec un code de base, je peux te faire un truc bien et fonctionnel
Le client peut envoyer / recevoir quels types de messages ? Une fois que tu as ça, tu n'as plus qu'à traiter les messages dans ta boucle principale sur le client, idem sur le script du serveur.
Je te conseille des messages très courts et ciblés : mot-clé de 8 caractères maxi & "#" & paramètres séparés par ";" si besoin, et un dernier # pour une réponse au message.
Genre le serveur envoie "SHUTDOWN#5" pour une extinction du client dans 5 secondes.
le client renvoie alors "SHUTDOWN#5#OK" si il est d'accord, et s'éteint.
Le serveur voit la réponse et affiche un message disant que l'ordre a bien été reçu et bien été traité.
Autre exemple :
Le client envoye "PIXEL#FF0000;3" au serveur pour dire que le feu 3 est passé au rouge.
Le serveur enregistre l'info, et retourne "PIXEL#FF0000;3#KO" au client, car il est occupé à autre chose.
Le client reçoie la réponse et réessaye "PIXEL#FF0000;3" au serveur 5 secondes plus tard.
Le serveur est dispo et renvoye "PIXEL#FF0000;3#OK" et affiche un message à l'écran pour dire que le feu 3 est passé au rouge.
Le client a reçu "PIXEL#FF0000;3#OK" et continue donc son boulot.
Somme toute, le souci, c'est de connecter les différents clients au serveur. une fois que c'est fait, le reste n'est que de la logique distribuée.
Et encore, c'est encore plus simple si tu n'as qu'un seul client à gérer à la fois. Dépose tes scripts, je peux t'aider là dessus sans trop de souci (par contre, je ne pourrai te donner un coup de main que pendant la journée).
A bientôt !
PS: Le truc le plus simple, c'est carrément de faire en sorte qu'à chaque fois qu'on a un message à envoyer, il soit mis dans un array. En parallèle, une fonction traite cette liste et envoye les messages au destinataire. Une autre fonction lit les messages d'arrivée, et dès qu'on a fait un tour de boucle, on regarde les messages en entrée. Ainsi ton programme sera très peu impacté par le système de communication. Ca semble barbare comme ça, mais je t'assure qu'avec un code de base, je peux te faire un truc bien et fonctionnel
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 !
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Re: [..] script pour communiquer entre host et guest
ZDS t'es un génie ! en plus de m'avoir très bien expliquer le principe tu m'as donné plein d'idées pour étoffer la simulation (en pilotant les feux à notre gré par exemple : jusque là je ne créer qu'un évènement pertubateur aléatoire : accident,vehicule lent ...)
je vais essayé de me familiariser avec cette communication dans un script séparé puis je refairé appel a toi pour m'aider à l'intégrer correctement dans mon script mais seulement une fois que j'aurais modifier le script pour ajouter toutes ces idées que tu m'as donné : ça devient ma priorité !
merci ZDS
je vais essayé de me familiariser avec cette communication dans un script séparé puis je refairé appel a toi pour m'aider à l'intégrer correctement dans mon script mais seulement une fois que j'aurais modifier le script pour ajouter toutes ces idées que tu m'as donné : ça devient ma priorité !
merci ZDS
Re: [..] Script pour communiquer entre host et guest
ok ma simulation colle bien mieux à la réalité et est très complète maintenant.
Je reprends donc le travail sur le tcp : à partir du dernier message de ZDS de differents topics et de l'aide j'ai vraiment du mal à comprendre comment ça se construit.
Voici le peu que je crois comprendre (il risque d'y avoir pas mal de betises dans ce qui suit
;ipv4 : machine hote 192.168.56.1 , virtuelle 192.168.56.101 ; "reseau" 192.168.56.0
Je reprends donc le travail sur le tcp : à partir du dernier message de ZDS de differents topics et de l'aide j'ai vraiment du mal à comprendre comment ça se construit.
Voici le peu que je crois comprendre (il risque d'y avoir pas mal de betises dans ce qui suit
;ipv4 : machine hote 192.168.56.1 , virtuelle 192.168.56.101 ; "reseau" 192.168.56.0
Code : Tout sélectionner
;---------------------------------------
;----------Script hôte-------------------
;---------------------------------------
Local $g_IP = "192.168.56.0"
TCPStartup()
tcplisten
tcpsend
tcprecv...
Code : Tout sélectionner
;---------------------------------------
;----------Script guest-------------------
;---------------------------------------
Local $g_IP = "192.168.56.0"
TCPStartup()
Local $socket = TCPConnect($g_IP, ????)
If $socket = -1 Then
Msgbox(0,"","0")
EndIf
tcplisten
tcpsend
tcprecv...
Re: [..] TCP host/guest
bonsoir, un petit coup de pouce pour l'architecture de mon code ?
- matwachich
- Membre émérite

- Messages : 986
- Enregistré le : lun. 19 oct. 2009 04:04
- Localisation : Algérie
- Status : Hors ligne
Re: [..] TCP host/guest
Bon, je vous ai concocté un petit exemple.
La communication ne fonctionne que dans un sens (Client -> Serveur), mais si vous le voulez, je pourrai le faire dans les 2.
Cet exemple est bien commenté
Sinon, pour faire encore plus simple, je vous propose mon UDF Simple TCP, il est documenté (en anglais
) mais il est fonctionnel, et une fois maitrisé, vous n'aurez plus à vous casser la tête avec les échanges d'informations en réseau
PS: Les MailSlots fonctionnent en réseau, mais je ne l'ai jamais tester (google: "MailSlot UDF Autoitscript")
La communication ne fonctionne que dans un sens (Client -> Serveur), mais si vous le voulez, je pourrai le faire dans les 2.
Cet exemple est bien commenté
► Afficher le texte
PS: Les MailSlots fonctionnent en réseau, mais je ne l'ai jamais tester (google: "MailSlot UDF Autoitscript")
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Re: [..] TCP host/guest
sincèrement un grand merci matwachich pour avoir pris le temps de commenté autant le code je comprends bien mieux à présent.
Effectivement je souhaiterais faire serveur <-> client. A quel endroit dois-je adapter le code ?
merci pour l'udf je l'avais deja chargé au cas où mais depuis que j'utilise autoit, j'essai de progresser le plus possible a chaque script !
merci encore
Effectivement je souhaiterais faire serveur <-> client. A quel endroit dois-je adapter le code ?
merci pour l'udf je l'avais deja chargé au cas où mais depuis que j'utilise autoit, j'essai de progresser le plus possible a chaque script !
merci encore

