Ich arbeite an einem grundlegenden Socket-Client-Programm in Python und ich bin nicht ganz sicher, wie mit Ausnahmen umzugehen. Dies ist, was ich jetzt habe bis:Python-Socket-Programmierung - Ausnahmebehandlung
TCP_IP = '..............'
TCP_PORT = 4950
MESSAGE = "o3"
BUFFER_SIZE = 2048
data = ""
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(5.0)
try:
s.connect((TCP_IP, TCP_PORT))
except socket.error:
#write error code to file
s.close()
try:
s.sendall(MESSAGE)
except socket.error:
#write to file or whatever
s.close()
try:
data = s.recv(BUFFER_SIZE)
except socket.error:
#write to file or whatever
s.close()
finally:
s.close()
Der Code funktioniert, wie ich will, aber ich bin nicht sicher, ob ich sollte Nest try/catch-Blöcke oder nicht? Sollte ich auch socket.socket
in try/catch-Block setzen?
Zweite Frage, was wird s.settimeout()
in meinem Fall tun? Soweit ich die Dokumentation verstanden habe, wird nach 5 Sekunden eine Ausnahme ausgelöst, aber wofür? Nur connect
oder wird es das gleiche für sendall
und recv
tun?
Vielen Dank für diese großartige Antwort! Noch eine Frage, was passiert, wenn ich die Originalversion verwende (try/catch Blöcke nacheinander) und Ausnahme wird bei socket.connect() abgefangen .. Ich denke, alle Socket-Operationen werden ausgeführt, was nicht gut ist? –