0
votes

Comment écrire un serveur d'écho Python qui ne se déconnecte pas après la première echo?

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!"

"Échoiement: salut là-bas!"

"Comment allez-vous?"

"Échoiement: comment allez-vous?"

"Cheer!"

"Échoiement: Bravo!"

etc.

J'ai actuellement le code suivant:

serveur.py: xxx

Client .py: xxx

Le serveur, cependant, déconnecte une fois que cela fait écho au premier message client (probablement à cause du si pas des données: casser ).

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.

Merci!


0 commentaires

3 Réponses :


0
votes

Peut-être utiliser peut-être le sommeil au lieu de casser xxx

Vous devez importer un module de temps pour cela.


0 commentaires

0
votes

Je vais vous montrer le code que j'ai créé puis vous parlez à travers elle:

serveur: strong> p> xxx pré>

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))


0 commentaires

0
votes
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()

1 commentaires

Nous vous remercions de votre contribution! Ce sera génial si vous pouviez ajouter des commentaires à l'appui.