les threads sur Python
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

les threads sur Python



  1. #1
    invite75a667e5

    les threads sur Python


    ------

    Bonjour,
    Je vient de faire un programme de chat entre PC et SERVEUR sous Python.J'ai réalisé l'a-synchronisme via les Threads.
    Mon problème est que je ne peut visualisée les donnée envoyées par le client au serveur qu'après faire une émission du serveur au client. Et si j'élimine par exemple le thread d'émission du serveur, alors là l'affichage du message reçu par le serveur est immédiat. Si quelqu'un pourrait me donner un coup de main, je lui serai reconnaissant.
    Voilà ci joint mon programme:

    *****************************C LIENT************************* ********************

    host = "00:24:7E6:C5:9A"
    port = 3

    import socket, sys, threading, time
    from bluetooth import *

    class ThreadReception(threading.Thre ad):
    def __init__(self, conn):
    threading.Thread.__init__(self )
    self.connexion = conn

    def run(self):
    while 1:
    message_recu = self.connexion.recv(1024)
    print "*" + message_recu + "*"
    if message_recu.upper() == "FIN":
    break
    time.sleep(0.001)

    class ThreadEmission(threading.Threa d):
    def __init__(self, conn):
    threading.Thread.__init__(self )
    self.connexion = conn

    def run(self):
    while 1:
    message_emis = raw_input()
    self.connexion.send(message_em is)
    time.sleep(0.001)

    # Programme principal - Établissement de la connexion :
    connexion = BluetoothSocket( RFCOMM )
    try:
    connexion.connect((host, port))
    except socket.error:
    print "La connexion a échoué."
    sys.exit()
    print "Connexion établie avec le serveur."

    # Dialogue avec le serveur : on lance deux threads pour gérer
    # indépendamment l'émission et la réception des messages :
    th_E = ThreadEmission(connexion)
    th_R = ThreadReception(connexion)
    th_E.start()
    th_R.start()
    th_E.join()
    th_R.join()
    connexion.close()
    ****************************** SERVEUR*********************** ****************

    from bluetooth import *
    import socket, sys, threading,time

    port = 3

    class ThreadReception(threading.Thre ad):
    def __init__(self, conn):
    threading.Thread.__init__(self )
    self.connexion = conn

    def run(self):
    while 1:
    try:
    message_recu = self.connexion.recv(1024)
    print "*" + message_recu + "*"
    if message_recu.upper() == "FIN":
    break
    exceptass
    time.sleep(0.001)


    class ThreadEmission(threading.Threa d):
    def __init__(self, conn):
    threading.Thread.__init__(self )
    self.connexion = conn

    def run(self):
    while 1:
    message_emis = raw_input()
    try:
    self.connexion.send(message_em is)
    if message_emis.upper() == "FIN":
    break
    exceptass
    time.sleep(0.001)

    # Programme principal - Établissement de la connexion :

    server_sock = BluetoothSocket( RFCOMM )
    server_sock . bind(( "", 3))
    server_sock . listen(2)

    connexion , client_info = server_sock . accept( )
    print "Accepted connection from " , client_info

    # Dialogue avec le client : on lance deux threads pour gérer
    # indépendamment l'émission et la réception des messages :

    th_R = ThreadReception(connexion)
    th_E = ThreadEmission(connexion)
    th_E.start()
    th_R.start()
    th_R.join()
    th_E.join()

    connexion.close()
    server_sock.close()

    -----

  2. #2
    JPL
    Responsable des forums

    Re : les threads sur Python

    Dans un programme écrit de façon lisible on indente les boucles, les procédures... Ensuite tu utilises la balise Code pour le poster en respectant cette présentation.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  3. #3
    invite75a667e5

    threads en chat sur Python

    <code>Bonjour,
    Je vient de faire un programme de chat entre PC et SERVEUR sous Python.J'ai réalisé l'a-synchronisme via les Threads.
    Mon problème est que je ne peut visualisée les donnée envoyées par le client au serveur qu'après faire une émission du serveur au client. Et si j'élimine par exemple le thread d'émission du serveur, alors là l'affichage du message reçu par le serveur est immédiat. Si quelqu'un pourrait me donner un coup de main, je lui serai reconnaissant.
    Voilà ci joint mon programme:
    Code:
    #####################CLIENT#####################
    
    host = "00:24:7E:D6:C5:9A"
    port = 3
    
    import socket, sys, threading, time
    from bluetooth import *
    
    class ThreadReception(threading.Thread):
        def __init__(self, conn):
            threading.Thread.__init__(self)
            self.connexion = conn           
            
        def run(self):
            while 1:
                message_recu = self.connexion.recv(1024)
                print "*" + message_recu + "*"
                if message_recu.upper() == "FIN":
                    break
                time.sleep(0.001)
        
    class ThreadEmission(threading.Thread):
        def __init__(self, conn):
            threading.Thread.__init__(self)
            self.connexion = conn          
            
        def run(self):
            while 1:
                message_emis = raw_input()
                self.connexion.send(message_emis)
                time.sleep(0.001)
    			
    # Programme principal - Établissement de la connexion :
    connexion = BluetoothSocket( RFCOMM )
    try:
        connexion.connect((host, port))
    except socket.error:
        print "La connexion a échoué."
        sys.exit()    
    print "Connexion établie avec le serveur."
                
    # Dialogue avec le serveur : on lance deux threads pour gérer
    # indépendamment l'émission et la réception des messages :
    th_E = ThreadEmission(connexion)
    th_R = ThreadReception(connexion)
    th_E.start()
    th_R.start()
    th_E.join()
    th_R.join()
    connexion.close()
    ###############SERVEUR####################
    
    from bluetooth import *
    import socket, sys, threading,time
    
    port = 3
    
    class ThreadReception(threading.Thread):
        def __init__(self, conn):
            threading.Thread.__init__(self)
            self.connexion = conn           
            
        def run(self):
            while 1:
                try:
                    message_recu = self.connexion.recv(1024)
                    print "*" + message_recu + "*"
                    if message_recu.upper() == "FIN":
                        break
                except:pass    
                time.sleep(0.001)
    		
        
    class ThreadEmission(threading.Thread):
        def __init__(self, conn):
            threading.Thread.__init__(self)
            self.connexion = conn          
            
        def run(self):
            while 1:
                message_emis = raw_input()
                try:
                    self.connexion.send(message_emis)
                    if message_emis.upper() == "FIN":
                        break
                except:pass    
                time.sleep(0.001)
                
    # Programme principal - Établissement de la connexion :
    
    server_sock = BluetoothSocket( RFCOMM )
    server_sock . bind(( "", 3))
    server_sock . listen(2)
    
    connexion , client_info = server_sock . accept( )
    print "Accepted connection from " , client_info
                
    # Dialogue avec le client : on lance deux threads pour gérer
    # indépendamment l'émission et la réception des messages :
    
    th_R = ThreadReception(connexion)
    th_E = ThreadEmission(connexion)
    th_E.start()
    th_R.start()
    th_R.join()
    th_E.join()
    
    connexion.close()
    server_sock.close()
    <code></code></code>

  4. #4
    Towl

    Re : les threads sur Python

    Surtout pour du python, sans indentation, c'est illisible puisque toute les séparation se font via l'indentation. Donc comme le dit JPL, un petit coup de balise code serait pas mal
    The only limiting factor of the Linux operating system, is his user. - Linus Torvalds

  5. A voir en vidéo sur Futura
  6. #5
    gienas
    Modérateur

    Re : threads en chat sur Python

    Bonsoir mcherkao88 et tout le groupe

    Ta dernière "réponse", se voulait vraisemblablement une suite à la discussion déjà ouverte. Elle a donc été fusionnée pour respecter la charte qui ne permet pas les doublons. Il convient de rester dans la même discussion.

Discussions similaires

  1. Python
    Par invite3e3c726d dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 13/03/2009, 11h55
  2. question : geany sur python
    Par inviteeb6b9cf7 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 13/03/2008, 21h19
  3. (Python) Lecture d'un stream à partir d'un fichier sur le web ?
    Par invite24357dd0 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 06/09/2006, 19h53
  4. Threads, process et mémoire
    Par invite4a7ad6a4 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 15/02/2006, 21h01
  5. les threads
    Par inviteacb3e291 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 10/10/2005, 16h32
Découvrez nos comparatifs produits sur l'informatique et les technologies.