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 :

problème client serveur


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 56
    Par défaut problème client serveur
    Bonjours,

    Voilà, j'ai ce magnifique programme qui crée un client et un serveur :

    Serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    import socket
    Sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    Host = '127.0.0.1' # l'ip locale de l'ordinateur
    Port = 234         # choix d'un port
     
    # on bind notre socket :
    Sock.bind((Host,Port))
     
    # On est a l'ecoute d'une seule et unique connexion :
    Sock.listen(1)
     
    # Le script se stoppe ici jusqu'a ce qu'il y ait connexion :
    client, adresse = Sock.accept() # accepte les connexions de l'exterieur
    print "L'adresse",adresse,"vient de se connecter au serveur !"
    while 1:
            RequeteDuClient = client.recv(255) # on recoit 255 caracteres grand max
            if not RequeteDuClient: # si on ne recoit plus rien
                    break  # on break la boucle (sinon les bips vont se repeter)
            print RequeteDuClient,"\a"         # affiche les donnees envoyees, suivi d'un bip sonore
    Client :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    import socket # on importe le module
    Sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # on cree notre socket
     
    # definition des informations :
    Host = '127.0.0.1'
    Port = 234
     
    # on se connecte sur le serveur avec les informations ci-dessus
    # assurez-vous d'avoir mis en marche le serveur !
    Sock.connect((Host,Port))
     
    # On est connecte, on fait une boucle infinie d'inputs pour l'envoi des messages :
    while 1:
            msg = raw_input('>> ')  # on rentre des donnees
            Sock.send(msg) # on envoie ces donnees
     
    # regardez ce qui se passe du cote serveur.
    Ce sctipt marche donc en local. J'aimerais savoir s'il y a moyen de l'utliser en dehors du local.

    j'ai essayé en mettant mais j'ai eu une erreur.

    merci d'avance

  2. #2
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Pour accéder à ton serveur depuis un réseau externe (typiquement... internet), tu dois définir des paramètres de routage, qui ne sont absolument pas dépendants de Python mais bien de ton routeur / quoi que ce soit qui fait passerelle réseau

    Ou alors connecter ta machine directement au net.

  3. #3
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 56
    Par défaut
    Mon ordinateur est connecté à internet mais je ne sais pas comment faire pour le coder en python ... Comment faire pour se connecter "directement au net" ?


    merci

  4. #4
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Citation Envoyé par Armadeus Voir le message
    "directement au net"
    Prendre le cable qui sort du modem et le brancher à ton pc

    Dans l'hypothèse bien sur que ton modem n'est pas aussi un routeur

    Ton problème n'a rien à voir avec ton code python, mais avec la configuration de ton matériel.

  5. #5
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 56
    Par défaut
    Prendre le cable qui sort du modem et le brancher à ton pc

    Dans l'hypothèse bien sur que ton modem n'est pas aussi un routeur

    Ton problème n'a rien à voir avec ton code python, mais avec la configuration de ton matériel.


    là je n'y comprend plus rien ^^. Mon ordinateur est pourtant connecté à internet (la preuve je suis ici )

    je ressoie le message d'erreur suivant quand je met (pour le serveur ) host = monip(pas la locale)

    Traceback (most recent call last):
    Sock.bind((Host,Port))
    File "<string>", line 1, in bind
    error: (10049, "Can't assign requested address")

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 271
    Par défaut
    Il faut mettre :
    De cette manière, le serveur écoutera sur toutes les interfaces réseaux.

    A priori tu es derrière un routeur donc c'est le routeur qui a l'ip publique.

    Il faut que tu translates un port du routeur vers le port de ton serveur sur ton pc.

    Enfin, ça c'est hors sujet python, c'est de l'administration réseau.

    Voir http://www.frameip.com/nat/#6_-_Comm...resse_publique

    Remarque : pour un serveur socket que tu crées toi-même, n'utilise pas un port < 1024 car ceux-ci sont réservés pour des services spécifiques (bien que tu puisses les utiliser) .

    Un peu de doc : http://www.frameip.com/liste-des-ports-tcp-udp/

  7. #7
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 56
    Par défaut
    ok merci beaucoup, je vais regarder ça

  8. #8
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 56
    Par défaut
    Une fois que le client s'y sera connecté, aucun souci pour la transmission des données. En effet, le serveur sait qu'il trouvera le client au bout du fil, donc il n'a plus à s'en préoccuper. (comme en interne finalement)
    Donc, il y a une possibilité de se connecter à un serveur derière un routeur juste avec les 2 adresse IP. Il doit y avoir une synthaxe spéciale pour pouvoir se rediriger dans le routeur.

    Si quelqu'un a une idée

  9. #9
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Il ne s'agit pas d'une "syntaxe spéciale", mais simplement de rêgles de routage.
    Comme dit plus haut, tu dois configurer ton routeur pour qu'il attribue certains ports à ton serveur.

  10. #10
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 56
    Par défaut
    Je l'ai fait mais lorsque je teste :

    [Errno 10061] Aucune connexion n'a pu être établie car l'ordinateur cible l'a expressément refusée
    Je pense que le port doit être fermé mais je ne suis pas sur. Si vous avez une idée sur le problème et surtout comment y remédier ...

  11. #11
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Si ton routeur est bien configuré, tu as peut-être aussi un firewall sur ton pc.

Discussions similaires

  1. Problème Client Serveur RMI
    Par Malhak dans le forum Débuter avec Java
    Réponses: 0
    Dernier message: 01/03/2009, 17h57
  2. Problème Client/Serveur Thread
    Par caporaldead dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/05/2008, 15h03
  3. Problème client-serveur : Err 10054
    Par Chop_chop dans le forum C++
    Réponses: 1
    Dernier message: 02/07/2007, 09h17
  4. Problème client-serveur TELNET.
    Par 0v3rb1t dans le forum Réseau
    Réponses: 5
    Dernier message: 20/05/2007, 16h59
  5. [C#] Problème client-serveur TCP
    Par LE NEINDRE dans le forum Windows Forms
    Réponses: 7
    Dernier message: 02/06/2006, 16h23

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