Port mapping (forwarding) avec python
Fermé
Hr2944
Messages postés
720
Date d'inscription
mardi 8 janvier 2019
Statut
Membre
Dernière intervention
22 janvier 2020
-
20 oct. 2019 à 21:40
Hr2944 Messages postés 720 Date d'inscription mardi 8 janvier 2019 Statut Membre Dernière intervention 22 janvier 2020 - 22 oct. 2019 à 11:03
Hr2944 Messages postés 720 Date d'inscription mardi 8 janvier 2019 Statut Membre Dernière intervention 22 janvier 2020 - 22 oct. 2019 à 11:03
A voir également:
- Port forwarding python
- Nettoyer port usb c - Accueil - Téléphones
- Citizen code python avis - Accueil - Outils
- Port ping - Forum Réseau
- Port 5000 - Forum Virus
1 réponse
yg_be
Messages postés
23405
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 décembre 2024
Ambassadeur
1 557
21 oct. 2019 à 12:11
21 oct. 2019 à 12:11
bonjour,
je suppose que tu veux programmer l'utilisation de l'appli qui configure ta freebox. ou trouver une méthode pour modifier la configuration de ta freebox par programme.
dans le premier cas, il serait utile que tu décrives cette application.
dans le second, examiner la documentation ou contacter le fournisseur de la freebox.
toutefois, je me demande si c'est une bonne idée d'utiliser ainsi un numéro de port différent pour chaque espace. ne serait-il pas plus simple d'utiliser un seul numéro de port?
je suppose que tu veux programmer l'utilisation de l'appli qui configure ta freebox. ou trouver une méthode pour modifier la configuration de ta freebox par programme.
dans le premier cas, il serait utile que tu décrives cette application.
dans le second, examiner la documentation ou contacter le fournisseur de la freebox.
toutefois, je me demande si c'est une bonne idée d'utiliser ainsi un numéro de port différent pour chaque espace. ne serait-il pas plus simple d'utiliser un seul numéro de port?
21 oct. 2019 à 12:51
Pour mapper les ports, j'utilise ça github.com/kaklakariada/portmapper
21 oct. 2019 à 13:33
2) fais-tu un lien entre l'utilisation de plusieurs numéros de port et tes difficultés avec l'adresse IP?
3) je ne partage pas ton analyse à propos du message d'erreur "adresse non valide dans son contexte". qu'essaies-tu de faire avec cette adresse?
4) quel est le lien entre les threads et la nécessité d'avoir plusieurs numéros de port?
21 oct. 2019 à 13:47
2) Non, mon problème est de faire communiquer l'espace de chaque jeu avec ses clients, le port mapping étant juste une solution possible. Je n'en trouve pas d'autre et n'ai pas d'expérience, c'est la première fois que j'utilise les socket.
3) L'erreur s'affiche car j'ai une adresse IP du client qui n'est pas sûr mon réseau local, mais le socket essaye de se connecter, dans mon réseau local, à un appareil qui a cette adresse IP. Sauf qu'il n'y en a pas, que l'adresse IP que j'ai doit être utilisée dans le réseau "globale". D'où ce message d'erreur.
4) Chaques threads représente un espace d'exécution du jeu, il doivent donc être capable de communiquer avec chaques clients. Mais pour pouvoir affecter les nouvelles données à la bonne partie en cour (donc les threads), il faut les envoyer à une adresse différente (ici les ports).
Peut être (sûrement) y a t'il une solution beaucoup plus simple que ce que je fais, mais je n'arrive pas à me l'imaginer. Merci de m'aider !
21 oct. 2019 à 14:09
4) tu as donc un serveur qui gère plusieurs parties de Monopoly, et tu appelles "espace" une partie. comment les joueurs choisissent-ils leur partie? qui établit les connexions, le serveur ou les clients?
5) comment proposer une solution plus simple sans que tu expliques ce que tu fais? as-tu déjà écrit une partie de ton programme?
21 oct. 2019 à 15:15
4) Le client se connecte à mon pc (mon serveur) grâce à un premier port. Un premier code lui envoye une partie_id (qui sert à mon second programme à savoir à quelle partie l'associer). Il se déconnecte de ce port pour se connecter à un autre port. Un autre code qui écoute sûr ce port là va le faire patienter jusqu'à ce que la partie qui lui est attribuée (qui est reconnue par partie_id) soit pleine (4 joueurs). Quand c'est fait, un tread va être créé et lancé. Pour communiquer, j'utilise le socket attribuée à chaque joueur (celui là même qui ne marche pas). Tout est en commande ligne au niveau de l'affichage. J'utilise deux bout de code et deux ports pour que se soit mieux organisé et ne pas m'embrouiller avec les différentes connexion. Il y a 1 code avec 1 port pour écouter les demandes de connexion à un jeu, et qui gère l'attribution des parties aux joueurs. 1 autre code avec 1 autre port gère le lancement des threads et de l'attente que la partie soit pleine.
5) Tout mon programme est écrit, comme c'est une adaptation de la version hors ligne, ce n'est pas très long. Si je pouvais utiliser comme je le veux ce socket, tout devrais marcher. Si tu as besoins d'autres infos, n'hésite pas.