Bonjour,
J’ai écrit un script qui permet de dialoguer sur le réseau en broadcast. Je peux lancer le serveur et le client séparément (deux terminaux), et ils fonctionnent, mais je ne parviens pas à les faire fonctionner en concurrence.
J’ai essayé en me basant sur le cours sur asyncio, mais je n’arrive pas à le mettre en pratique (j’ai des erreurs dès que j’essaie ). Pouvez vous me guider pour que ça fonctionne avec mon programme? Voici le code actuel, sans asyncio:
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 | from socket import * import pickle, asyncio port=12345 class BrServer(object): "Serveur broadcast: découverte d'utilisateurs sur le réseau" def __init__(self, port): self.s=socket(AF_INET, SOCK_DGRAM) self.s.bind(('',port)) self.status=1 def start(self): while self.status: print("écoute...") m=self.s.recvfrom(1024) reception=pickle.loads(m[0]) adresse=m[1][0] print(reception) print( adresse ) if (reception == 'fin'): print ("Commande de fin reçue") self.status=0 def stop(self): self.status=0 print("fin écoute broadcast") class BrClient(object): "Client broadcast: se présenter sur le réseau" def __init__(self, port): "Initialiser un socket" self.s=socket(AF_INET, SOCK_DGRAM) self.s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1) self.port=port def send(self, message): "Envoyer un message" self.s.sendto(pickle.dumps(message),('255.255.255.255',self.port)) # On lance le serveur ecouter=BrServer(port) ecouter.start() # On lance le client (ne sera pas exécuté avant la fin du serveur) parler=BrClient(port) parler.send("hello") parler.send("4688") parler.send("fin") parler.send(":)") |
+0
-0