Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Python] Obtenir l'ip de l'ordi

Un module avec une fonction pour ça?

    25 mars 2006 à 14:32:43

    Bonjour,

    je souhaite faire une version multijoueur pour mon jeu, et j'aurais besoin d'une fonction en python qui permette d'obtenir l'ip de l'ordi qui utilise le programme.

    Seulement, j'ai beau chercher je n'ai pas trouvé... :( Je vous appelle donc à mon secours! :D

    Merci d'avance à tous!
    • Partager sur Facebook
    • Partager sur Twitter
      25 mars 2006 à 17:50:48

      Salut,

      Tu cherches quelques choses de portable?
      Ou exclusivement sur un OS précis?
      • Partager sur Facebook
      • Partager sur Twitter
        25 mars 2006 à 19:04:13

        Bah je préfairerais plutôt que ce soit portable (pour info je suis sous Windows).

        Après s'il n'y a pas d'autres solutions, temps pis!
        • Partager sur Facebook
        • Partager sur Twitter
          25 mars 2006 à 19:39:19

          tu peux utiliser les sockets, mais ça risque de pas marcher si il a un routeur ...
          • Partager sur Facebook
          • Partager sur Twitter
            25 mars 2006 à 20:12:34

            J'en ai un... :D D'ailleurs, quand j'utiliserai les sockets j'aurai besoin de l'ip (en fait c'est pour cette raison que je cherche à savoir comment trouver l'ip), mais si il y a un routeur ça ne marchera plus? :euh:
            • Partager sur Facebook
            • Partager sur Twitter
              25 mars 2006 à 20:19:28

              Mouais excuse, je voyais une possibilité de ce coté mais ...
              Mais dis moi tu veux faire quoi exactement?
              Ton jeux n'aurai pas besoins de serveur?
              • Partager sur Facebook
              • Partager sur Twitter
                25 mars 2006 à 20:20:41

                J'avais vu pour un script bash une methode bourrin qui marche même derrière du NAT: faire un wget (ou equivalent python si tu es sous windows) d'une page web genre www.adresseip.com (ou mieux une page dediee sur un serveur web python :) ) puis faire une regexp pour isoler l'ip
                • Partager sur Facebook
                • Partager sur Twitter
                  25 mars 2006 à 21:31:11

                  Citation : sloshy

                  Mouais excuse, je voyais une possibilité de ce coté mais ...
                  Mais dis moi tu veux faire quoi exactement?
                  Ton jeux n'aurai pas besoins de serveur?



                  En fait, voilà ce que je veux faire: j'ai programmé un jeu othello pour jouer sur un seul ordi à 2 joueurs, et je voudrais en faire une version multijoueurs. J'avais donc prévu de suivre le pan suivant:

                  -étape 1: un utilisateur veut créer une partie hôte. Pour cela, on récuprèe son adresse i.p, et on se connecte à une page web (sur un serveur) qui enregistrera l'ip dans une base de données.
                  -étape 2: un autre utilisateur veut participer à une partie multijoueurs déjà créée, on récupère pour cela la liste des ip acompagnées des noms des joueurs depuis la bdd (tjs en se connectant à la page web en question)
                  -étape 3: après que l'utilisateur ait choisi une partie, il se connecte à l'autre ordinateur, puis le reste du jeux suit tout seul.

                  Voilà, mais surtout ne vous moquez pas si ce n'est pas possible: c'est la première fois que je fais de la programmation réseau.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 mars 2006 à 21:44:57

                    Tu sais, j'ai jamais fait de progra réseau alors ^^
                    je cherche tout comme toi :)

                    mais tant que j'y pense, pourquoi envoyez l'ip, alors que si tu fais une connection au serveur, il l'a recupere lui.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 mars 2006 à 23:14:31

                      il y a un fonction getLocalHost ou un truc du genre dans le module socket
                      • Partager sur Facebook
                      • Partager sur Twitter
                        25 mars 2006 à 23:26:16

                        Citation : sloshy

                        Tu sais, j'ai jamais fait de progra réseau alors ^^
                        je cherche tout comme toi :)

                        mais tant que j'y pense, pourquoi envoyez l'ip, alors que si tu fais une connection au serveur, il l'a recupere lui.



                        Bah en fait le serveur dans ce que je fais ça serait l'ordi qui crée la partie hôte, et pour lier les 2 ordis je compte passer par l'intermédiaire d'une BDD.
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          25 mars 2006 à 23:41:50

                          gethostname() renvoie le nom local (chez moi, "Chapter24.local" par exemple)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            25 mars 2006 à 23:45:41

                            c'est exacte, je l'utilise dans mon éditeur, hé pour toi ça te rendra surement l'adresse de rebouclage ...
                            • Partager sur Facebook
                            • Partager sur Twitter
                              26 mars 2006 à 7:42:56

                              sur un autre forum il y a la meme question

                              http://www.pythonfrance.com/infomsg/IP-RESEAU-LOCAL-2_692262.aspx

                              moi j'y est rien compris mais sa peut vous aider :D
                              • Partager sur Facebook
                              • Partager sur Twitter
                                26 mars 2006 à 9:59:02

                                Bigloo: merci, j'ai testé et a marche pour le local.
                                romain: merci pour le post, je suis pas sûr de tout avoir compris mais ça me donne une diée: lorsque le programme python va se connecter à la page web, la page peut grâce à PHP récupérer l'ip, non?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Anonyme
                                  26 mars 2006 à 13:02:55

                                  @rthur> Pour le local mais pas pour Internet.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    26 mars 2006 à 16:46:46

                                    Citation : Bigloo

                                    @rthur> Pour le local mais pas pour Internet.



                                    Tu parles de quoi? De gethostname()?
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      26 mars 2006 à 18:17:21

                                      Ah ok, merci, ça me servira pour une section réseau local!
                                      Et sinon, pour le réseau internet, mon idée pourrait marcher? J'utiliserais $_SERVER['REMOTE_ADDR'] lorsque le programme se connecterais à ma page... Puis le deuxième utilisateur se connecterais à cette ip. Mais s'il y a un routeur ça se complique!
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        26 mars 2006 à 18:31:31

                                        bha faudra alors que chaque 'serveur' possede php ...
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          26 mars 2006 à 20:21:28

                                          Nan en fait y'aura un serveur qui s'occupera de lier 2 ordis par leurs IP, puis après c'est tout.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            27 mars 2006 à 18:11:26

                                            Salut,
                                            Pour récupèrr l'ip en php utilise plutôt cette fonction :
                                            <?php
                                            function get_ip() {
                                                if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
                                                    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
                                                }
                                                elseif(isset($_SERVER['HTTP_CLIENT_IP'])) {
                                                    $ip  = $_SERVER['HTTP_CLIENT_IP'];
                                                }
                                                else {
                                                    $ip = $_SERVER['REMOTE_ADDR'];
                                                }
                                                return $ip;
                                            }
                                            ?>

                                            Ensuite, pour te donner une idée de l'architechture minimale du code :
                                            Il faudrais que quand un client veux créer une partie, tu envoi une requete (via get dans l'adresse, directement (grâce au module urllib)) qui dit de créer une partie avec en info, l'ip du créateur, le pseudo du créateur et le port qu'il va écouter.
                                            Ensuite, tu lance l'écoute d'un port avec socket.
                                            Quand quelqu'un veux jouer, il fait une requete "liste_games" (j'imagine ^^ ), sélectionne le joueur avec qui il veux jouer, récupère son ip et son port d'écoute et ensuite le playeur sélectionne une partie et envoi des données sur l'ip du créateur qui écoute. Celui-ci envoi une réponse come quoi il est bien présent et la partie commence :p

                                            Ainsi, avec cette méthode, tu peux (grâce ensuite à une architecture multithreads) améliorer ton programme pour que un joueur puisse avoir plusieurs partie en cours : plusieurs écoutes sur plusieurs ports (importants ça, le module random est ton ami :) )
                                            Stoque quand même les ports utilisées car random peut quand même retomber dessus :p .

                                            Ne fait pas l'architecture multithread si ton jeux ne peut pas comporter plusieurs parties :) .
                                            Tu peux quand même le faire pour t'entrainer si ça te chante.



                                            Bisous, Nyu
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              27 mars 2006 à 22:09:23

                                              Merci beaucoup de ta réponse Dutiona, ça va beaucoup m'aider! Et avec un routeur ça devrait marcher aussi non, comme l'hôte enverra son port?
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                28 mars 2006 à 14:38:49

                                                L'hote envoi son port en donnée via http (à la page web). Après, il reçoit des données par ce port.
                                                Le mieux, c'et de tester, je ne peux pas prévoir si ça va marcher ou pas :p



                                                Bisous, Nyu
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  28 mars 2006 à 20:31:07

                                                  Ok, j'essaierai ça dès que j'aurais le temps! Merci :)

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter

                                                  [Python] Obtenir l'ip de l'ordi

                                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                  • Editeur
                                                  • Markdown