py: Fehler beim Beenden

hehejo

hehejo

blöder Purist
Hallo!

(zum Anhang: einfach in .py umbenennen)
Ich habe in Python einen kleinen Server und einen kleinen Client geschrieben.
Hintergrund ist ein kleiner Chat.

Das alles ist mir schon recht gut gelungen. Gut die Darstellung ist noch mies, aber der eigentliche Client will ich in Java schreiben. Aber vll. mach ich das doch auch mit Tk oder wxWindows.. Aber das ist eine andere Sache.

Leider gibt es beim Beenden des Clients ein Problem. Er lässt sich nicht beenden. Nur wenn ich den Server mit STRG+C beende, beendet sich auch der Client.
Habe ich davor beim Clients STRG+C gedrückt, kommt dann (nach dem Beenden) diese Fehlermeldung:
Code:
Error in sys.exitfunc:
Traceback (most recent call last):
  File "/usr/lib/python2.3/atexit.py", line 20, in _run_exitfuncs
    func(*targs, **kargs)
  File "/usr/lib/python2.3/threading.py", line 571, in __exitfunc
    t.join()
  File "/usr/lib/python2.3/threading.py", line 478, in join
    self.__block.wait()
  File "/usr/lib/python2.3/threading.py", line 206, in wait
    self._note("%s.wait(): got it", self)
KeyboardInterrupt

Ach ja, wenn ich "normal" beende, muss man beim Client erst noch was eingeben. Der wartet nämlich noch auf einen raw_input (die Eingabe).

Schau euch bitte meinen Code an und helft mir.
Ich freue mich auf jeden Tipp!
 

Anhänge

  • Server.txt
    1,7 KB · Aufrufe: 7
  • Client.txt
    1,4 KB · Aufrufe: 7
hi,

wie wärs wenn du für das beenden einen exception handler einbaust.
also:

Code:
try:
	#einlesen von tastatur
except Exception:
	print "das programm wird nun beendet"

dann müsste es gehen..ich weiss nur im moment net, welche exception da auftritt. aber da exception ja hierarchisch aufgebaut sind, kannste die oberste ("Exception") nehmen, dann werden alle fehler abgefangen.
mfg
Sebastian
 
Du musst bei den Threads irgendeine Execption abfangen, die haben nämlich auf einmal keine Mama mehr :)

steve
 
Exceptions - hab ich doch..

Code:
try:
  data_send = raw_input ("")
  self.s_connect.send(data_send)
except KeyboardInterrupt:
  self.stop();
except EOFError:
  pass      # liegt es hieran?

Hm, ich glaube es liegt eher daran, dass ich da einen "pass" mache..
 

Ähnliche Themen

Falsche Rechte gesetzt beim Anlegen von Ordnern via Samba-Client

[Python] Zeitmessung mit timeit

Displayport + externer Monitor zeigt bei startx nichts erst bei DVI

Samba Update von 3.2.5 auf 3.5.6 - Probleme beim Server Browsen

Traceback Fehler im SMART

Zurück
Oben