Merci de tes félicitations (pas du tout méritées :oops: ) et de tes encouragements !
Bon, voilà, j'ai écrit mon code pour tout rediriger, j'ai écrit les en-têtes de quelques autres fonctions... :roll:
En gros, j'ai une fonction qui exécute la commande (au fait, si vous cherchez comment utiliser des commandes avec sudo, vous utilisez bien les fonctions du système classiques, et vous lui faites taper "echo "+password+"| sudo -S ...", voilà j'ai un peu cherché :D) (D'ailleurs, pas pour le bot, mais pour d'autres projets, comment on fait pour récupérer la réponse du terminal ? Pas le code de retour, mais par exemple la liste des fichiers si on tape "ls").
Puis j'ai une deuxième fonction (à écrire demain ou Mercredi, c'est là que je saurai si ça fonctionne ou pas) centrale, celle qui "Ouvre les connections entrantes et sortantes, et renvoie les deux sockets associés dans un tuple".
Voilà, c'est tout pour les fonctions de création du MITM.
2ème étape : On réceptionne les paquets, on les comprend, on les transfère, et on en envoie d'autres aussi (sinon ça sert à rien :lol: )
Ben c'est là que j'ai besoin de votre expérience pour savoir comment j'organise ce bazar, et que feront mes Threads (je suppose au moins 2, un pour recevoir et renvoyer dans un sens et un pour l'autre mais pas plus pour le réseau sinon je ne peux pas gérer un socket avec 2 threads).
Je me demande même si c'est utile de les utiliser, vu qu'en Python, il existe l'instruction "select" qui permet de créer une pile pour stocker des paquets avant de les "recevoir" dans le programme. De plus, il me semble faisable d'incorporer l'AI dans la même boucle, parce qu'à moins qu'elle prenne une demie-seconde (ce qui est impossible pour un A* sur une petite map par exemple), la durée du ping couvrira la latence occasionnée par le MITM.
D'un autre côté, une AI séparée serait plus efficace, mais comme je fais du beau code (je me flatte, sissi ^^), j'aime pas les variables globales, donc je me tâte, mais un MITM dans l'AI serait galère.
Enfin, propositions :idea: (ne soyez pas indulgents, on apprend de ses erreurs) :
(j'ai utilisé une présentation style python, ne m'en veuillez pas :mrgreen: )
MITM1():
select(socket1)
select(socket2)
reçoit(socket1)
reçoit(socket2)
gère les listes définies plus loin
MITM2(): deux sockets qui ont deux piles (sous la forme de listes) et chacun alimente la pile de tâche de l'autre. En plus des deux sockets, une boucle gère les listes d'échange entre MITM et AI.
Programme 1
GROSSE BOUCLE:
MITM()
AI()
Programme 2
THREAD 1 = MITM() en boucle
THREAD 2 = AI() en boucle
Schéma UNIQUE (l'autre possibilité est compliquée avec l'AI qui contient le MITM) :
Serveur <----------> <MITM> <----------> Client
__________________________/\ Liste globale de paquets à envoyer, remplie par l'AI, vidée progressivement par le MITM
___________________________|
___________________________|
___________________________|
___________________________V Liste globale de paquets intéressants (choisis) remplie par le MITM, vidée (ou non) par l'AI
___________________________AI
EDIT : les '_' ne veulent rien dire, je les ai mis parce que je me suis aperçu que les espaces ne passent pas
Il me semble que le schéma est bon, la question la plus grave est de savoir si la fréquence d'envoi/réception des paquets permet la solution (de facilité, j'ai peur des Threads que je n'ai jamais utilisé :o ) MITM1 et/ou (j'attends votre opinion) Programme 1.
En tous cas, j'apprends beaucoup de ce projet !!! Je voudrais aussi savoir si vous avez besoin de dons pour entretenir le site, parce que j'aimerais aider à mon tour ;)