Ich habe die Dokumentation für SocketServer
betrachtet. Ich kopierte den TCP-Server-Code aus der Dokumentation und es läuft gut. Allerdings habe ich festgestellt, dass, wenn ich das Programm in meinem Terminal-ctrl c'ed, und dann versucht, es wieder zu laufen, würde ich die folgende Fehlermeldung erhalten:SocketServer: loswerden '[Errno 98] Adresse bereits verwendet'
socket.error: [Errno 98] Address already in use
Ich sah, wie sich das Problem zu beheben durch Lesen this und this. Ich fügte hinzu, die zu meinem Code folgende Zeile zu versuchen, die Wiederverwendung der Adresse zu ermöglichen:
server.allow_reuse_address = True
ich immer noch das gleiche Problem erlebe auch mit der obigen Zeile hinzugefügt. Ich fügte auch eine try
und except
um meine server.serve_forever()
Funktion hinzu, die Ausnahme KeyboardInterrupt abfangend und server.shutdown()
und in der Hoffnung nennend, dass die Adresse befreit würde.
Hier das volle Ausmaß meines TCP-Server-Code ist (Anmerkung: ausgeschlossen ich die MyTCPHandler Klasse):
if __name__ == "__main__":
HOST, PORT = '', 9999
# Create the server, binding to localhost on port 9999
server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)
server.allow_reuse_address = True
# Activate the server; this will keep running until you
# interrupt the program with Ctrl-C
try:
server.serve_forever()
except KeyboardInterrupt:
server.shutdown()
server.socket.close()
Ich bin immer noch den Fehler immer über den Code ausgeführt wird und in der Nähe einer Minute warten müssen, bis Die Adresse wird endgültig freigegeben. Das ist frustrierend, wenn ich meinen Code ständig debugge und ändere.
Ich verwende diesen Code mit Python 2.7.3 auf einem RaspberryPi mit Raspbian "Wheezy" 7.0.
Das hat funktioniert. Vielen Dank! –