Bonsoir,
J'ai un problème avec l'exécution de deux scripts (pour une communication basique entre client et serveur) faisant intervenir les threads, la référence au client par c>message et au serveur par s>message ne fonctionne pas tout le temps.
Ci-joint les deux scripts:
Serveur:
Client :
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 import socket, sys, threading HOST = "" PORT = 50010 mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: mySocket.bind((HOST, PORT)) except socket.error: print("La liaison du socket à l'adresse choisie a échoué.") sys.exit() print("Serveur prêt, en attente de requêtes ...") mySocket.listen(5) connexion, adresse = mySocket.accept() print("Client connecté, adresse IP %s, port %s" % (adresse[0], adresse[1])) class VersClient(threading.Thread): def __init__(self,clientsocket): threading.Thread.__init__(self) self.clientsocket=clientsocket self.clientsocket.send(bytes("Vous êtes connecté au serveur Marcel. Envoyez vos messages.", "utf8")) def run(self): while 1: msgServeur = input("S> ") self.clientsocket.send(msgServeur.encode()) class DepuisClient(threading.Thread): def __init__(self,clientsocket): threading.Thread.__init__(self) self.clientsocket=clientsocket def run(self): while 1: msgClient = self.clientsocket.recv(1024) msgClient1 = msgClient.decode() print("C> "+ msgClient1) if msgClient1=="FIN" or msgClient1=="Au revoir !": break self.clientsocket.send(bytes("Au revoir !", "utf8")) print("Connexion interrompue.") self.clientsocket.close() versclient=VersClient(connexion) depuisclient=DepuisClient(connexion) depuisclient.start() versclient.start()
Merci d'avance pour votre aide.
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 import socket, sys, threading HOST = 'LOCALHOST' PORT = 50010 mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: mySocket.connect((HOST, PORT)) except socket.error: print("La connexion a échoué.") sys.exit() print("Connexion établie avec le serveur.") class VersServeur(threading.Thread): def __init__(self,clientsocket): threading.Thread.__init__(self) self.clientsocket=clientsocket def run(self): while 1: msgClient = input("C> ") self.clientsocket.send(msgClient.encode()) class DepuisServeur(threading.Thread): def __init__(self,clientsocket): threading.Thread.__init__(self) self.clientsocket=clientsocket def run(self): while 1: msgServeur = self.clientsocket.recv(1024) msgServeur1=msgServeur.decode() print("S> "+ msgServeur1) if msgServeur1=="FIN" or msgServeur1=="Au revoir !": break self.clientsocket.send(bytes("Au revoir !", "utf8")) print("Connexion interrompue.") versserveur=VersServeur(mySocket) depuiserveur=DepuisServeur(mySocket) depuiserveur.start() versserveur.start()
Partager