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 entre 2 ordinateurs Client / Serveur


Sujet :

Réseau/Web Python

  1. #1
    Invité
    Invité(e)
    Par défaut Connexion entre 2 ordinateurs Client / Serveur
    Bonjour,
    J'utilise 2 programmes Client / Server pour permettre à 2 ordinateurs de se connecter entre eux.
    Cependant, ils ne parviennent pas à se détecter, malgré le fait qu'ils soient tous 2 connectés au même réseau wifi.
    Je ne comprends absolument pas le pb (quand j'exécute leq 2 programmes sur le même ordi, ils marchent, les 2 programmes arrivent à se lier ici, mais pas quand c'est sur 2 ordi différents).

    Ci-joint les 2 programmes.

    client.py
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    import threading
    import socket
    from tkinter import *
     
    def demarrer():
        global s#####
        bouton_demarrer["state"],bouton_stop["state"]="disable","normal"
        texte_bis.config(text="\u2B55 Waiting connexion",fg="orange")
        s=socket.socket()
        threading.Thread(target=lancement_client,daemon=True).start()
     
    def lancement_client():
        try:
            s.connect(("127.0.0.1",12345))
            texte_bis.config(text="\u2714 Successful connexion",fg="green")
            bouton_envoyer["state"],saisie["state"]="normal","normal"
            hostname = socket.gethostname()
            print(f"Hostname : {hostname}")
            ip_address = socket.gethostbyname(hostname)
            print(f"IP Address : {ip_address}")
            try:
                while True:
                    rcvdData=s.recv(1024).decode()
                    print("Server :",rcvdData)
            except:stop()
        except:
            print("Délai dépassé")
            stop()
     
    def envoyer():
        s.send(msg.get().encode())
        msg.set("")
     
    def stop():
        s.close()#####
        try:c.close()#####
        except:pass#####
        texte_bis.config(text="\u2716 Connexion lost",fg="red")
        bouton_demarrer["state"],bouton_envoyer["state"],bouton_stop["state"],saisie["state"]="normal","disable","disable","disable"
        msg.set("")
     
    fenetre=Tk()
    fenetre.geometry("{}x{}+{}+{}".format(500,200,400+300,200))
    texte=Label(fenetre,text="CLIENT",font=25)
    texte.pack()
    bouton_demarrer=Button(fenetre,text="Démarrer",font=25,command=demarrer)
    bouton_demarrer.pack()
    texte_bis=Label(fenetre,font=25)
    texte_bis.pack()
    msg=StringVar()
    saisie=Entry(fenetre,textvariable=msg,font=25,state="disable")
    saisie.pack()
    bouton_envoyer=Button(fenetre,text="Envoyer",font=25,command=envoyer,state="disable")
    bouton_envoyer.pack()
    bouton_stop=Button(fenetre,text="Stop",font=25,command=stop,state="disable")
    bouton_stop.pack()
    fenetre.mainloop()
    server.py
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    import threading
    import socket
    from tkinter import *
     
    def demarrer():
        global s#####
        bouton_demarrer["state"],bouton_stop["state"]="disable","normal"
        texte_bis.config(text="\u2B55 Waiting connexion",fg="orange")
        s=socket.socket()
        s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
        port=12345
        s.bind(("",port))
        s.listen(5)
        threading.Thread(target=lancement_server,daemon=True).start()
     
    def lancement_server():
        global c#####
        try:
            c,addr=s.accept()
            texte_bis.config(text="\u2714 Successful connexion",fg="green")
            bouton_envoyer["state"],saisie["state"]="normal","normal"
            hostname=socket.gethostname()
            print(f"Hostname : {hostname}")
            ip_address = socket.gethostbyname(hostname)
            print(f"IP Address : {ip_address}")
            try:
                while True:
                    rcvdData=c.recv(1024).decode()
                    print("Client :",rcvdData)
            except:stop()
        except:stop()
     
    def envoyer():
        c.send(msg.get().encode())
        msg.set("")
     
    def stop():
        s.close()#####
        try:c.close()#####
        except:pass#####
        texte_bis.config(text="\u2716 Connexion lost",fg="red")
        bouton_demarrer["state"],bouton_envoyer["state"],bouton_stop["state"],saisie["state"]="normal","disable","disable","disable"
        msg.set("")
     
    fenetre=Tk()
    fenetre.geometry("{}x{}+{}+{}".format(500,200,400-300,200))
    texte=Label(fenetre,text="SERVER",font=25)
    texte.pack()
    bouton_demarrer=Button(fenetre,text="Démarrer",font=25,command=demarrer)
    bouton_demarrer.pack()
    texte_bis=Label(fenetre,font=25)
    texte_bis.pack()
    msg=StringVar()
    saisie=Entry(fenetre,textvariable=msg,font=25,state="disable")
    saisie.pack()
    bouton_envoyer=Button(fenetre,text="Envoyer",font=25,command=envoyer,state="disable")
    bouton_envoyer.pack()
    bouton_stop=Button(fenetre,text="Stop",font=25,command=stop,state="disable")
    bouton_stop.pack()
    fenetre.mainloop()
    Merci pour l'aide !
    (J'utilise Python 3.9.0 sous Windows 10.)
    Dernière modification par Invité ; 15/11/2020 à 21h01. Motif: fichiers => balises [CODE] mon code [/CODE] (bouton #)

  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
    Salut,

    Vous avez remarqué que lorsque le client veut se connecter au serveur, il passe l'adresse IP du serveur et le port (s.connect(("127.0.0.1",12345)))

    127.0.0.1 est une adresse IP spéciale pour désigner le localhost.
    Et si le serveur est sur un autre ordinateur, il faut passer la bonne adresse IP après avoir vérifié (via ping) que vous pouviez l'atteindre (via votre réseau).

    Dit autrement, avant de programmer des calculs matriciels, il faut savoir ce que sont ces calculs. Pour la programmation réseau, il faut savoir ce qu'est un réseau et comment il fonctionne.

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

Discussions similaires

  1. [WD12] probléme de date entre WD12 et SQL server 2005
    Par Bassemca dans le forum WinDev
    Réponses: 5
    Dernier message: 19/12/2008, 21h27
  2. Comment connecter entre delphi et sql server ?
    Par DJERDJAR YACINE dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2007, 10h33
  3. Problème de format entre Windev et SQl Server
    Par rphenix dans le forum WinDev
    Réponses: 7
    Dernier message: 20/06/2007, 09h36
  4. J'ai un problème de connection entre deux pc
    Par The_Haunted dans le forum Hardware
    Réponses: 15
    Dernier message: 08/02/2007, 20h10
  5. problème de date entre 2 ordinateurs
    Par Kenia dans le forum Access
    Réponses: 4
    Dernier message: 09/10/2006, 12h35

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