Python Socket Server TCP Status erkennen?

2 Antworten

Du könntest die recv() Methode in der while Schleife verwenden. Die recv() Methode empfängt Daten von einem Client über einen TCP-Socket. Wenn keine Daten empfangen werden, gibt die recv() Methode einen leeren String zurück, was bedeutet, dass der Client nicht mehr anwesend ist.

Um das zu implementieren, könntest du in der while Schleife überprüfen, ob die recv() Methode einen leeren String zurückgibt. Wenn ja, könntest du die Schleife verlassen und die Verbindung schließen. Wenn recv() nicht leer ist, könntest du die empfangenen Daten zurücksenden und den Timestamp aktualisieren, um die Schleife fortzusetzen.

So könntest du das in deinem Code einbauen.

while True:
    data = conn.recv(1024*10)
    if not data:
        break
    else:
        conn.send(data)
        timestamp = time.time()
    time.sleep(0.1)

conn.close()


Woher ich das weiß:eigene Erfahrung – Studium in der Wirtschaftsinformatik
3oclock 
Fragesteller
 25.12.2022, 15:24

Ah, Ok, du scheinst recht zu haben! Ich hatte da wohl einen Denkfehler, da mein Code im Client ja die Verbindung geschlossen hat. Vielen Dank!

0
FragenMeiste291  25.12.2022, 15:27
@3oclock

Es freut mich, dass ich dir helfen konnte! Wenn du noch weitere Fragen zu Python oder zu anderen Themen hast, zögere nicht, mich zu fragen. Ich bin immer gerne bereit, zu helfen.

1

Es gibt keien Möglichkeit den Status des sockets abzufragen.

    try:
        data = conn.recv(1024*10)
    except TimeoutError:
        #cleanup and break.
3oclock 
Fragesteller
 26.12.2022, 01:38

Danke! Sehr hilfreich! Ich bin heute schon den ganzen Tag dabei aber durschaue das Ding nicht ganz.

0