Je travaille sur un projet qui implique l'envoi de données via TCP. En utilisant le ThreadedTCPServer, je peux déjà le faire. Le thread du serveur n'a besoin que de lire les chaînes de données entrantes et de définir la valeur des variables. Pendant ce temps, j'ai besoin du thread principal pour voir ces variables changer de valeur. Voici mon code jusqu'à présent, juste modifié à partir de l'exemple ThreadedTCPServer:
import socket
import threading
import SocketServer
x =0
class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
def handle(self):
data = self.request.recv(1024)
# a few lines of code in order to decipher the string of data incoming
x = 0, 1, 2, etc.. #depending on the data string it just received
class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
pass
if __name__ == "__main__":
# Port 0 means to select an arbitrary unused port
Host, PORT = 192.168.1.50, 5000
server = ThreadedTCPServer((Host, PORT), ThreadedTCPRequestHandler)
# Start a thread with the server -- that thread will then start one
# more thread for each request
server_thread = threading.Thread(target=server.serve_forever)
# Exit the server thread when the main thread terminates
server_thread.daemon = True
server_thread.start()
print "Server loop running in thread:", server_thread.name
while True:
print x
time.sleep(1)
server.shutdown()
Donc, la façon dont cela devrait fonctionner est que le programme imprime constamment la valeur de x, et à mesure que de nouveaux messages arrivent, la valeur de x devrait changer. Il semble que le problème soit que le x qu'il imprime dans le thread principal n'est pas le même x auquel une nouvelle valeur est attribuée dans les threads du serveur. Comment puis-je changer la valeur de x dans le thread principal à partir de mon thread serveur?
Essayez de partager un Queue
entre vos discussions.