IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

client serveur pas local


Sujet :

Réseau/Web Python

  1. #1
    Membre habitué
    Homme Profil pro
    Vagabong étudiant en annalyse du signal.
    Inscrit en
    Avril 2019
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Vagabong étudiant en annalyse du signal.
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2019
    Messages : 123
    Points : 162
    Points
    162
    Par défaut client serveur pas local
    Bonjour, je suis débutant en informatique, j'ai fait un module qui permet de paralléliser des programmes. Pour une question de simplicité, j'ai utilisé l'API de Dropbox pour metre en communication les différents ordinateurs. Ca fonctionne, mais ce n'est pas propre et pas rapide. Je shouaiterai utiliser le protocol TCP. J'ai reussi a metre en place une relation basique client/serveur qui fonctionne en local. Mais dès qu'il faut passer le routeur: c'est la cata!
    dans mon programme, je donne s.connect(("192.168.0.45", 5006)) . Comment est-ce qu'il faut s'y prendre pour lui donner une ip pas locale? je peux lui donner 2 ip (celle local et celle du routeur) ?
    Merci pour votre aide!
      0  0

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Tu passes par l'adresse IP publique, tu peux la connaître via n'importe quel site web. Il faudra régler ton routeur pour accepter ton application, ainsi que la porte que tu souhaites ouvrir. Ton adresse publique devra être statique, dans quel cas, tu devras passer par un nom de domaine, tel que No-IP ou bien d'autres afin que ton serveur soit fonctionnel sans avoir à modifier la configuration de ton application.

    Mais tout cela n'a rien à voir avec Python !
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
      0  0

  3. #3
    Membre habitué
    Homme Profil pro
    Vagabong étudiant en annalyse du signal.
    Inscrit en
    Avril 2019
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Vagabong étudiant en annalyse du signal.
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2019
    Messages : 123
    Points : 162
    Points
    162
    Par défaut
    Merci. Mon IP public c'est 88.127.96.133 et le port publique serait, si j'ai bien compris 5001. Les clients tentent d'envoyer une requette à cette adresse mais au lancement du programme j'ai l'erreur suivante: ConnectionRefusedError: [Errno 111] Connection refused

    Coté serveur, il écoute le port 5006 avec l'adresse 192.168.0.45. J'ai tenté de faire un pont au niveau du routeur entre ces 2 (adresses et ports) mais je ne vois aucune différence.

    Toujours coté seveur, si je lui demande d'écouter les port 5001 avec l'adresse 88.127.96.133, il me dit: OSError: [Errno 99] Cannot assign requested address

    Je connais les adresses ip, pourquoi passer par un nom de domaine? Je croyais qu'un domaine c'etait juste une chaine de caractère qui remplace une ip, et donc que c'était utile quand on ne connaissait pas l'ip, mais apparemment je me trompe.

    Idéalement, j'aimerai réussir à automatiser le chemin, ne pas avoir a metre les mains de le routeur, mais que ça se fasse depuis python. Quand j'installe Dropbox ou Skype, je n'ai pas besoin de configurer le routeur, ça se fait tout seul. Je ne vois vraiment pas comment m'y prendre

    ps: mon routeur, c'est une freebox (je sais pas si ça peu aider)
      0  0

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Je connais les adresses ip, pourquoi passer par un nom de domaine?
    Parce qu'une adresse IP publique est dynamique et change régulièrement. Donc si tu n'as pas un "détecteur" de ce changement comme 'No-IP' par exemple, ton serveur ne sera plus utilisable.
    Apparemment sur ta freebox il est possible de créer un nom de domaine sans passer par un intermédiaire.

    Les mains dans le routeur c'est juste pour ouvrir le port de ton routeur.
    Tu dois y placer l'adresse IP locale et le port à ouvrir, c'est tout normalement (je connais pas freebox). Ensuite, il n'y a plus rien à faire de ce côté.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
      0  0

  5. #5
    Membre habitué
    Homme Profil pro
    Vagabong étudiant en annalyse du signal.
    Inscrit en
    Avril 2019
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Vagabong étudiant en annalyse du signal.
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2019
    Messages : 123
    Points : 162
    Points
    162
    Par défaut
    Mais si il faut seulement aller sur le routeur pour ouvir un port, pourquoi ne pas en utiliser un déjà ouvert?
    Derriere la box, il y a plusieurs machines. Comment je peux faire, si j'utilise un domaine, pour que les requettes exterieur soient redirigées vers la bonne machine?
    Comment peut-on savoir quels ports sont ouvert pour le TCP de python?
    Dans un premier temps, j'aimerai réussir à metre tout ça en place sans creer un nom de domaine, même si tout s'effondrera des que l'ip externe va changer. Elle change vraiment souvent?
      0  0

  6. #6
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    rien qu'à regarder, 88.127. tu es chez Free et ton IP est déjà fixe/statique, pas besoin non plus de nom de domaine (même en cas d'IP dynamique, elle ne change pas toutes les minutes de toutes façons)

    par contre il te manque des connaissances réseau importantes, typiquement si tu héberges un serveur sur ta machine dans ton réseau local (LAN) les machines sur Internet (WAN) ne peuvent pas y accéder spontanément.

    sur le principe, le client se connecte à ton IP publique sur le port 12345, ton routeur voit arriver le paquet et là il doit avoir une règle qui lui dit "quand un paquet arrive pour le port 12345 redirige-le vers la machine 192.168.x.y dans le LAN", c'est ce qu'on appelle du port forwarding (dans le Freebox OS c'est l'option "redirection de ports")

    on récapitule, scénario simple :
    • le serveur est en écoute sur 0.0.0.0 (par défaut) et sur un port plus grand que 1023 (sinon il faut les droits root)
    • le client se connecte obligatoirement à l'IP publique du serveur et sur le port désigné (88.127.x.x:12345)
    • coté serveur le routeur doit être configuré pour accepter le trafic sur le port en question et le rediriger vers la machine dans le LAN sur laquelle tourne le serveur (tout ce qui arrive sur 88.127.x.x:12345 est redirigé vers 192.168.y.y:12345)
      ce dernier point signifie donc que ton serveur/son port devient accessible depuis internet, sous-entendu à n'importe qui (même si la probabilité peut être faible que quelqu'un le découvre)


    un tuto pour mettre en place une redirection de port sur une Freebox

    par contre ça n'a effectivement aucun rapport avec Python.
      0  0

  7. #7
    Membre habitué
    Homme Profil pro
    Vagabong étudiant en annalyse du signal.
    Inscrit en
    Avril 2019
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Vagabong étudiant en annalyse du signal.
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2019
    Messages : 123
    Points : 162
    Points
    162
    Par défaut
    Super merci
    J'avais "compris" que l'une des solutions etait de faire une redirection de port mais je ne savait pas du tout comment m'y prendre, ça c'est fait! Super!
    Mais alors ducoup, comment ils font skype et les jeux videos Pour faire une redirection de port, j'ai besoin d'un mot de passe pour me connecter sur ma freebox et en changer les paramères. Pourtant, Skype de m'a pas demandé l'identifiant et le mot de passe de ma freebox lors de son installation! C'est bien qu'il y a un moyen d'éviter la redirection de port non? Est-ce que depuis le client, il y a un moyen de dire: connecte toi au port 5001 à l'adresse 88.127.96.133, puis quand tu as passé la box, connecte toi au port 5001 à l'adresse 192.168.0.45 ? en gros au moment de la commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    import socket
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(("88.127.96.133", 5001)) #et ajouter ici: puis tu iras voir le port ("192.168.0.45", 5006)
    Bref, il y aurait-il une solution qui me permeterai de ne pas toucher à la box?
      0  0

  8. #8
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    C'est le numéro de port qui va spécifier vers quelle adresse locale tu devras aller.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
      0  0

  9. #9
    Membre habitué
    Homme Profil pro
    Vagabong étudiant en annalyse du signal.
    Inscrit en
    Avril 2019
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Vagabong étudiant en annalyse du signal.
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2019
    Messages : 123
    Points : 162
    Points
    162
    Par défaut
    Le seul moyen de faire une redirection de port, est-ce vraiment par la box? iptable semble pouvoir faire ça mais je ne comprend pas vraiment comment l'utiliser, sur internet, ils parlent de 'tunel'... Est-ce qu'il est possible de faire mon opération depuis la commande iptable et non pas directement sur le routeur?

    Autre chose que je n'ai pas compris, c'est dans quel sens que la redirection de port doit se faire? pourquoi le serveur ne pourrait pas directement écouter l'ip 88.127.96.133 sur le port 5001? Quand j'essai il me dit OSError: [Errno 99] Cannot assign requested address. Du coup la redirection de port elle sert a ce que le serveur puisse directement écouter 88.127.96.133 sur le port 5001 ou bien pour que les clients qui se connectent à 88.127.96.133 sur le port 5001 se connectent en réalité sur le port 5006 sur la machine 192.168.0.45 sur le LAN?
      0  0

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par robinechuca Voir le message
    Autre chose que je n'ai pas compris, c'est dans quel sens que la redirection de port doit se faire? pourquoi le serveur ne pourrait pas directement écouter l'ip 88.127.96.133 sur le port 5001? Quand j'essai il me dit OSError: [Errno 99] Cannot assign requested address. Du coup la redirection de port elle sert a ce que le serveur puisse directement écouter 88.127.96.133 sur le port 5001 ou bien pour que les clients qui se connectent à 88.127.96.133 sur le port 5001 se connectent en réalité sur le port 5006 sur la machine 192.168.0.45 sur le LAN?
    Et si vous alliez poser vos questions dans un des forums de la rubrique réseau?
    N'oubliez pas que l'intérêt d'un forum de discussion est de permettre à ceux qui auraient un problème semblable de trouver une réponse (et pas seulement de résoudre votre problème).
    Pour que çà fonctionne, il faut que les discussions soient à peut près bien rangées dans les rubriques correspondantes: apprendre à configurer votre freebox n'a rien à voir avec la programmation Python.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels
      0  0

Discussions similaires

  1. Windows socket client serveur en local erreur WinError 10061
    Par kevin254kl dans le forum Réseau/Web
    Réponses: 5
    Dernier message: 16/01/2018, 19h18
  2. Client / Serveur en local
    Par Amnael dans le forum Réseau
    Réponses: 6
    Dernier message: 20/10/2015, 17h11
  3. Réponses: 8
    Dernier message: 10/03/2015, 21h39
  4. Réponses: 4
    Dernier message: 25/09/2007, 17h12
  5. Client/Serveur en Local sans connexion réseau
    Par ramoud dans le forum C++Builder
    Réponses: 8
    Dernier message: 05/07/2007, 14h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo