Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
771 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  threads en chat sur Python

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

threads en chat sur Python

n°1958359
mcherkao88
Posté le 16-01-2010 à 16:34:56  profilanswer
 

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 :
  1. #####################CLIENT#####################
  2. host = "00:24:7E:D6:C5:9A"
  3. port = 3
  4. import socket, sys, threading, time
  5. from bluetooth import *
  6. class ThreadReception(threading.Thread):
  7.     def __init__(self, conn):
  8.         threading.Thread.__init__(self)
  9.         self.connexion = conn         
  10.        
  11.     def run(self):
  12.         while 1:
  13.             message_recu = self.connexion.recv(1024)
  14.             print "*" + message_recu + "*"
  15.             if message_recu.upper() == "FIN":
  16.                 break
  17.             time.sleep(0.001)
  18.    
  19. class ThreadEmission(threading.Thread):
  20.     def __init__(self, conn):
  21.         threading.Thread.__init__(self)
  22.         self.connexion = conn         
  23.        
  24.     def run(self):
  25.         while 1:
  26.             message_emis = raw_input()
  27.             self.connexion.send(message_emis)
  28.             time.sleep(0.001)
  29. # Programme principal - Établissement de la connexion :
  30. connexion = BluetoothSocket( RFCOMM )
  31. try:
  32.     connexion.connect((host, port))
  33. except socket.error:
  34.     print "La connexion a échoué."
  35.     sys.exit()   
  36. print "Connexion établie avec le serveur."
  37.            
  38. # Dialogue avec le serveur : on lance deux threads pour gérer
  39. # indépendamment l'émission et la réception des messages :
  40. th_E = ThreadEmission(connexion)
  41. th_R = ThreadReception(connexion)
  42. th_E.start()
  43. th_R.start()
  44. th_E.join()
  45. th_R.join()
  46. connexion.close()
  47. ###############SERVEUR####################
  48. from bluetooth import *
  49. import socket, sys, threading,time
  50. port = 3
  51. class ThreadReception(threading.Thread):
  52.     def __init__(self, conn):
  53.         threading.Thread.__init__(self)
  54.         self.connexion = conn         
  55.        
  56.     def run(self):
  57.         while 1:
  58.             try:
  59.                 message_recu = self.connexion.recv(1024)
  60.                 print "*" + message_recu + "*"
  61.                 if message_recu.upper() == "FIN":
  62.                     break
  63.             except:pass   
  64.             time.sleep(0.001)
  65.    
  66. class ThreadEmission(threading.Thread):
  67.     def __init__(self, conn):
  68.         threading.Thread.__init__(self)
  69.         self.connexion = conn         
  70.        
  71.     def run(self):
  72.         while 1:
  73.             message_emis = raw_input()
  74.             try:
  75.                 self.connexion.send(message_emis)
  76.                 if message_emis.upper() == "FIN":
  77.                     break
  78.             except:pass   
  79.             time.sleep(0.001)
  80.            
  81. # Programme principal - Établissement de la connexion :
  82. server_sock = BluetoothSocket( RFCOMM )
  83. server_sock . bind(( "", 3))
  84. server_sock . listen(2)
  85. connexion , client_info = server_sock . accept( )
  86. print "Accepted connection from " , client_info
  87.            
  88. # Dialogue avec le client : on lance deux threads pour gérer
  89. # indépendamment l'émission et la réception des messages :
  90. th_R = ThreadReception(connexion)
  91. th_E = ThreadEmission(connexion)
  92. th_E.start()
  93. th_R.start()
  94. th_R.join()
  95. th_E.join()
  96. connexion.close()
  97. server_sock.close()
  98. <code>

mood
Publicité
Posté le 16-01-2010 à 16:34:56  profilanswer
 

n°1958399
KangOl
Profil : pointeur
Posté le 16-01-2010 à 22:21:26  profilanswer
 

la question est: pourquoi un thread d'emission dans le serveur ??
le serveur doit juste ecouter sur le port et répondre au demandes...


---------------
Nos estans firs di nosse pitite patreye...
n°1958400
mcherkao88
Posté le 16-01-2010 à 22:38:01  profilanswer
 

Je sais que c'est pas le cas ordinaire. Mais j'aimerais bien faire la chose comme Ça avec plus d'interactivité entre Client/serveur.
Est-ce impossible?


Message édité par mcherkao88 le 16-01-2010 à 22:39:46

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  threads en chat sur Python

 

Sujets relatifs
CMS en PHP vs CMS en Python[Python] [Résolu] Variables globales
Perdu dans un code Python![Python] [Résolu] Liste
[Python] Questions de nOobdébutante: fréquence des mots sur Python
Aide pour un programme pythonThreads synchronisés ?
[Objective-C] Application de chat pour iphone / socket[Python] Communication avec un subprocess
Plus de sujets relatifs à : threads en chat sur Python


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR