bonjour a tous,
a première vu ce post peut paraître déjà existant...
mais rassurez vous je viens avec du nouveau !
j'aurais besoin d'aide pour la "vérification" d'un programme. Car en effet la connexion avec les différents clients se fait mais les messages ne s'affichent pas.
qu'est ce qui est faux dans ce que j'ai fait ? (je n'ai pas tout fait mais quand même)
merci d'avance pour vos réponses.
voici mes codes
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 import socket import threading import sys import pickle class Serveur(): """docstring pour serveur""" def __init__(self, hote="localhost", port=4000): self.clients = [] self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock.bind((str(hote), int(port))) self.sock.listen(10) self.sock.setblocking(False) accepter = threading.Thread(target=self.acceptation) proceder = threading.Thread(target=self.processus) accepter.daemon = True accepter.start() proceder.daemon = True proceder.start() while True: msg = input('->') if msg == 'fin': self.sock.close() sys.exit() else: pass def acceptation(self): print("acceptation initialisée") while True: try: conn, addr = self.sock.accept() conn.setblocking(False) self.clientes.append(conn) except: pass def processus(self): print("processus initialisé") while True: if len(self.clients) > 0: for c in self.clients: try: data = c.recv(1024) if data: self.message_pour_tous(data,c) except: pass def message_pour_tous(self, msg, client): for c in self.clients: try: if c != client: c.send(msg) except: self.clients.remove(c) s = Serveur()
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 import socket import threading import sys import pickle class Client(): """docstring pour client""" def __init__(self, hote = 'localhost', port = 4000): self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock.connect((str(hote), int(port))) msg_recv = threading.Thread(target=self.msg_recv) msg_recv.daemon = True msg_recv.start() while True: msg = input('->') if msg != 'fin': self.send_msg(msg) else: self.sock.close() sys.exit() def msg_recv(self): while True: try: data = self.sock.recv(1024) if data: print(pickle.loads(data)) except: pass def send_msg(self, msg): self.sock.send(pickle.dumps(msg)) c = Client()
Partager