J'ai écrit ce code .py pour communiquer entre chaque sortie. A.py écoute le port 8888 et envoie les données à 7777 B.py écoute le port 7777 et envoie les données à 8888 Ces deux parties client sont bloquées dans une boucle infinie après le démarrage de leur serveur. où est le problème ?? Si je n'utilise que le serveur dans A.py et le client dans B.py (et vice versa) sans aucun thread, ils fonctionnent correctement.Le threading python entre deux classes ne fonctionne pas correctement
A.py:
import socket
import threading
import thread
import time
class server(threading.Thread):
s = ''
host = 0
port = 0
def __init__(self):
threading.Thread.__init__(self)
global s,host,port
s = socket.socket()
host = socket.gethostname()
port = 8888
def run(self):
global s,host,port
print 'Server started!'
print 'Waiting for clients...'
s.bind((host, port))
s.listen(5)
c, addr = s.accept()
print 'Got connection from', addr
while True:
time.sleep(2)
msg = c.recv(1024)
if len(msg)==0 : break
print addr, ' >> ', msg
class client(threading.Thread):
s = ''
host = 0
port = 0
def __init__(self):
threading.Thread.__init__(self)
global s,host,port
s = socket.socket()
host = socket.gethostname()
port = 7777
def run(self):
try:
time.sleep(5)
global s,host,port
print 'Connecting to ', host, port
s.connect((host, port))
print "Connectd"
while True:
time.sleep(2)
msg = raw_input('CLIENT >> ')
if len(msg)==0:break
s.send(msg)
except:
print "Waiting"
self.run()
thread1 = server()
thread2 = client();
thread1.start()
thread2.start()
thread1.join()
thread2.join();
B.py:
import socket
import threading
import thread
import time
class server(threading.Thread):
s = ''
host = 0
port = 0
def __init__(self):
threading.Thread.__init__(self)
global s,host,port
s = socket.socket()
host = socket.gethostname()
port = 7777
def run(self):
global s,host,port
print 'Server started!'
print 'Waiting for clients...'
s.bind((host, port))
s.listen(5)
c, addr = s.accept()
print 'Got connection from', addr
while True:
time.sleep(2)
msg = c.recv(1024)
if len(msg)==0 : break
print addr, ' >> ', msg
class client(threading.Thread):
s = ''
host = 0
port = 0
def __init__(self):
threading.Thread.__init__(self)
global s,host,port
s = socket.socket()
host = socket.gethostname()
port = 8888
def run(self):
try:
time.sleep(5)
global s,host,port
print 'Connecting to ', host, port
s.connect((host, port))
print "connected"
while True:
time.sleep(2)
msg = raw_input('CLIENT >> ')
if len(msg)==0:break
s.send(msg)
except:
print "waiting"
self.run();
thread1 = server()
thread2 = client();
thread1.start()
thread2.start()
thread1.join()
thread2.join();
Où sont les pièces du client? – Sid