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 :

Connexion client serveur par module socket [Python 2.X]


Sujet :

Réseau/Web Python

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Juin 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 89
    Points : 70
    Points
    70
    Par défaut Connexion client serveur par module socket
    Bonjour,

    J'exécute sur la même machine un bout de code serveur et un autre client avec le module socket.

    Mon problème provient du fait que si j'utilise l'adresse IP en 192.168.77.1 au lieu du nom de la machine cela ne fonctionne pas. Si j'utilise le nom de la machine cela fonctionne.
    Voici le code de la partie 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
    import socket               # Import socket module
     
    s = socket.socket()         # Create a socket object
    #host = socket.gethostname() # Get local machine name
    host = '192.168.77.1'
    #host = 'FR-31-01-13-061'
     
    print host
    port = 12345                # Reserve a port for your service.
     
    mon_tuple = (host, port)
     
    s.connect(mon_tuple)
    print s.recv(1024)
    s.close                     # Close the socket when done
    Voici celui la partie serveur qui ne pose pas de problème il me semble:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import socket               # Import socket module
     
    s = socket.socket()         # Create a socket object
    host = socket.gethostname() # Get local machine name
    port = 12345                # Reserve a port for your service.
    s.bind((host, port))        # Bind to the port
     
    s.listen(5)                 # Now wait for client connection.
    while True:
       c, addr = s.accept()     # Establish connection with client.
       print 'Got connection from', addr
       c.send('Thank you for connecting')
       c.close()                # Close the connection
    L'erreur que j'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Traceback (most recent call last):
      File "D:\Users\sedasilv\Desktop\client_TCP.py", line 23, in <module>
        s.connect(mon_tuple)
      File "C:\Python27\lib\socket.py", line 224, in meth
        return getattr(self._sock,name)(*args)
    socket.error: [Errno 10061] Aucune connexion n'a pu être établie car l'ordinateur
    cible l'a expressément refusée
    Je suis sur Windows 7 et j'ai désactivé le pare-feu.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 239
    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 239
    Points : 36 692
    Points
    36 692
    Par défaut
    Salut,

    L'erreur dit que la pile TCP n'a pas trouvé le serveur.
    Relisez votre code (la partie serveur):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    s = socket.socket()         # Create a socket object
    host = socket.gethostname() # Get local machine name
    port = 12345                # Reserve a port for your service.
    s.bind((host, port))        # Bind to the port
    Normalement, "bind" sert à préciser les interfaces sur lesquelles le serveur va écouter.
    Et en général, on donne l'adresse IP associée à l'interface pas le nom du host.
    Le plus simple est d'écouter sur toutes les interfaces:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    HOST, PORT = "", 12345
    s.bind( (HOST, PORT) )
    Vous trouverez les explications de tout çà dans les pages man de "bind" et/ou le forum réseau.

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

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Juin 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 89
    Points : 70
    Points
    70
    Par défaut
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Socket connexion client/serveur en WIFI
    Par walslayer dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 11/01/2012, 11h44
  2. Connexion client/serveur par socket
    Par k3nsou dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 23/03/2009, 18h34
  3. client serveur par socket
    Par darkgenesis dans le forum EDT/SwingWorker
    Réponses: 3
    Dernier message: 15/01/2009, 21h09
  4. module de connexion client serveur
    Par atifo dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 18/06/2008, 13h16
  5. [SOCKET] connexion client serveur avec applet
    Par kaiser2003 dans le forum Applets
    Réponses: 2
    Dernier message: 06/10/2004, 23h32

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