Partage
  • Partager sur Facebook
  • Partager sur Twitter

socket et IP wan

connexion a un pc distant via internet

Sujet résolu
Anonyme
    25 juillet 2010 à 18:13:58

    Bonjour, avec ces deux scripts suivants:
    serveur:
    import sys, socket
    port =55000
    s =socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        s.bind(('', port)) # tuple waiting
    except s.error:
        print("impossible de lier le socket à ce port")
        sys.exit()
    print("Server installé")
    s.listen(1) # prépare a recevoir 1 personne
    print("En attente de connexion...")
    news, addr =s.accept() # interruption
    print("New client : " + addr[0] +" sur le port " +str(addr[1]) +" vient de se connecter")
    news.send("Bienvenue".encode("Utf-8"))
    msgC =news.recv(1024).decode("Utf-8")
    while 1:
        if msgC.upper() =="END":
            break
        print("C> " +msgC)
        news.send(input("S> ").encode("Utf-8"))
        msgC =news.recv(1024).decode("Utf-8")
    print("Fin de la connexion avec ce client")
    news.send("END".encode("Utf-8"))
    news.close()
    

    client:
    import socket, sys
    ip, port ="192.168.1.10", 55000
    s =socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        s.connect((ip, port)) # tuple attendu
    except s.error:
        print("connexion impossible au server")
        raise SystemExit
    print("Connexion établie")
    msgS =s.recv(1024).decode("Utf-8")
    while 1:
        if msgS.upper() =="END":
            break
        print("S> " +msgS)
        s.send(input("C> ").encode("Utf-8"))
        msgS =s.recv(1024).decode("Utf-8")
    print("FIN connexion")
    s.send("end".encode("Utf-8"))
    s.close()
    

    J'arrive à effectuer une communication dans le cadre d'un réseau local.Cependant je n'arrive pas à effectuer cette action par internet via une ip public.J'ai fait de nombreuses recherche sur internet mais les scripts traitant des sockets sont toujours au niveau local.
    Pouvez-vous m'expliquer la démarche ?
    • Partager sur Facebook
    • Partager sur Twitter
      26 juillet 2010 à 12:45:10

      Tu remplaces l'ip locale par l'ip publique et c'est tout. Maintenant assure-toi bien que ton routeur laisse passer les requêtes (ici via le port 55000) et les redirige vers la bonne ip locale.
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        26 juillet 2010 à 20:32:57

        MathX>>> Oui merci lol j'avais fini par trouvé tout seul mais je pouvais pas re-poster sur le même sujet en moins de 24h :D Merci quand même !
        Donc effectivement il faut allez dans le firewall de sa box et ouvrir le port que va utiliser le programme, puis allez dans la configuration NAT et rediriger ver l'IP LAN

        PS: si certain on eu le même problème que moi avec les sockets:
        C'est à dire qu'une fois ouvert avec le programme et la communication coupé avec un socket.close() mais que le prog continue a saturé le port, donc impossible de faire un socket.bind() avec une nouvelle instance du prog, ouvrez un shell => netstat -ano puis cherché votre IP LAN avec le protocole utilisé, dans mon cas c'est TCP (car socket construit avec SOCK_STREAM) puis regardé sur la ligne le PID qui utilise le port.
        Il ne vous reste plus qu'a ouvrir la fenêtre des processus et kill le processus correspondant à ce PID, voilà.
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          26 juillet 2010 à 20:43:35

          Citation : vieks

          MathX>>> Oui merci lol j'avais fini par trouvé tout seul mais je pouvais pas re-poster sur le même sujet en moins de 24h :D Merci quand même !


          D'où l'utilité de mettre le sujet en résolue ...
          • Partager sur Facebook
          • Partager sur Twitter

          socket et IP wan

          × 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