Je veux configurer un simple serveur d'écho qui fait écho à ce que le client lui envoie. Cependant, le serveur se déconnecte actuellement (la prise de serveur se ferme) après avoir fait écho au premier message client. Je veux être capable de "discuter" de manière continue avec le serveur, où le serveur fait écho à plusieurs messages consécutifs que j'envoie sans déconnexion; E.g.:
"Salut là-bas!" p>
"Échoiement: salut là-bas!" p>
"Comment allez-vous?" P>
"Échoiement: comment allez-vous?" P>
"Cheer!" p>
"Échoiement: Bravo!" P> blockQuote> blockQuote> blockquote>
etc. p>
J'ai actuellement le code suivant: p>
serveur.py: p>
xxx pré> Client .py: p>
xxx pré> Le serveur, cependant, déconnecte une fois que cela fait écho au premier message client (probablement à cause du
si pas des données: casser code> ). P>
ps J'apprécierais toute explication supplémentaire qui pourrait être nécessaire - cet exemple a des fins éducatives, donc je ne suis pas (seulement) après avoir obtenu le code en cours d'exécution. P>
Merci! P> P>
3 Réponses :
Peut-être utiliser peut-être le sommeil au lieu de casser Vous devez importer un module de temps pour cela. p> p>
Je vais vous montrer le code que j'ai créé puis vous parlez à travers elle:
serveur: strong> p> pour le serveur que j'ai supprimé: P> import socket
HOST = '127.0.0.1'
PORT = 5000
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
print("Connected")
while True:
print("Sending data")
s.sendall(b'Hello, world')
print("Recieving data")
data = s.recv(1024)
print('Echoing: ', repr(data))
server.py: import socket HOST = '127.0.0.1' PORT = 5000 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((HOST, PORT)) s.listen() conn, addr = s.accept() with conn: while True: data = conn.recv(1024) if data.decode() == "bye": break conn.sendall(data) conn, addr = s.accept()
Nous vous remercions de votre contribution! Ce sera génial si vous pouviez ajouter des commentaires à l'appui.