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 :

Socket qui fonctionnent en local mais pas à distance..


Sujet :

Réseau/Web Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Socket qui fonctionnent en local mais pas à distance..
    Voilà, je débute dans les réseaux, et je suis à chaque test confronté au même problème : le système client/serveur fonctionne très bien en local, mais dès que j'essaye de communiquer avec quel'un d'autre (en chageant localhost en une adresse IP), le client et le serveur ne se trouvent plus ! Aurais-je oublié quelque chose d'essentiel ?
    Exemple trouvé sur le net :
    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
    20
    21
    22
    23
    24
    25
    26
    # TCP server example
    import socket
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind(("", 5000))
    server_socket.listen(5)
     
    print "TCPServer Waiting for client on port 5000"
     
    while 1:
    	client_socket, address = server_socket.accept()
    	print "I got a connection from ", address
    	while 1:
    		data = raw_input ( "SEND( TYPE q or Q to Quit):" )
    	 	if (data == 'Q' or data == 'q'):
    			client_socket.send (data)
    			client_socket.close()
    			break;
    		else:
    			client_socket.send(data)
     
                    data = client_socket.recv(512)
                    if ( data == 'q' or data == 'Q'):
    			client_socket.close()
    			break;
    		else:
    			print "RECIEVED:" , data
    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
    18
    # TCP client example
    import socket
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client_socket.connect(("localhost", 5000))
    while 1:
        data = client_socket.recv(512)
        if ( data == 'q' or data == 'Q'):
            client_socket.close()
            break;
        else:
            print "RECIEVED:" , data
            data = raw_input ( "SEND( TYPE q or Q to Quit):" )
            if (data <> 'Q' and data <> 'q'):
                client_socket.send(data)
            else:
                client_socket.send(data)
                client_socket.close()
                break;
    Merci d'avance :-)

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Bonsoir,
    En général lorsque vous avez un programme TCP/IP qui fonctionne avec localhost, le code est "bon" jusqu'à la couche TCP.

    Lorsque vous mettez de "vraies" adresses IP et que cela ne fonctionne plus, le programme n'est pas devenu "buggé" d'un coup d'un seul: vous avez peut être mal reporté les adresses IP, rencontrez un problème réseau...

    => une description du comportement et des messages d'erreurs rencontrés aiderait beaucoup...
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Ben...il n'y a pas la moindre erreur de générée, simplement, la serveur ne trouve pas le client et réciproquement...
    Quel est le problème avec les sockets TCP ? Que faut-il utiliser si on ne peut pas les utiliser ? Dans l'exemple donné ci-dessus, que faudrait-il modifier ?

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

    Il suffit de changer la valeur de localhost dans le client.
    Lorsque le client arrive à joindre le serveur: le serveur vous l'affiche...
    Dans le cas contraire, côté client, vous devriez avoir après quelques instants (de l'ordre de la minute):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Traceback (most recent call last):
      File "socket_client.py", line 4, in <module>
        client_socket.connect(("10.12.34.56", 5000))
      File "<string>", line 1, in connect
    socket.error: [Errno 51] Network is unreachable
    bash-3.2$
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Oui, ça j'ai bien compris
    Mais, essaye chez toi...mais en tout cas pour moi ça marche pas...

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    J'ai essayé chez moi - et j'ai fait copie&coller du message d'erreur
    Citation Envoyé par -Sly- Voir le message
    Mais, essaye chez toi...mais en tout cas pour moi ça marche pas...
    Quelle est l'erreur retournée?
    Est-ce que la machine A et la machine B répondent aux pings de A->B et réciproquement?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Ben...il n'y a pas la moindre erreur de générée, simplement, la serveur ne trouve pas le client et réciproquement...

  8. #8
    Membre régulier

    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 70
    Points : 71
    Points
    71
    Par défaut
    Peut être que tout simplement la machine distante n'autorise pas les conection entrantes. C'est possible. sur la machine distante il te faut peut être configurer le routeur pour qu'il accepte les connetions entrante des tel ou tel adresse IP sur tel ou tel PORT. Si sont pare-feu est activé et qu'il bloque les connections inconue, tu ne pourra pas te connecté cher lui.
    voilà, en espérant avoir repondut a ta question.si tu en as encore besoin ... (je n'avaos pas vue la date)

Discussions similaires

  1. [RegEx] Regex qui fonctionne en local mais pas sur le serveur
    Par lecroquant dans le forum Langage
    Réponses: 3
    Dernier message: 10/01/2012, 16h01
  2. Mail php qui fonctionne en local mais pas en distant
    Par Equinoxe5 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 14/10/2011, 17h07
  3. Réponses: 1
    Dernier message: 25/03/2011, 12h37
  4. [Artichow] Génération graphique qui fonctionne en local mais pas en ligne
    Par Marc22 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 18/02/2011, 13h27
  5. Script qui fonctionne en local, mais pas en ligne
    Par student_php dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/11/2010, 10h22

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