Exception handeln

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Dr.Network
User
Beiträge: 11
Registriert: Mittwoch 26. März 2008, 12:35

Hallo, vielleicht kann mir einer helfen und zwar möchte ich folgende Exception handeln und danach ein Clean up für den entsprechenden Client machen. Wie würde das gehen? VIELEN DANK! :P

Code: Alles auswählen

Server started on port 20000, waiting for connections.
127.0.0.1:2218 connected
<type name='pa_mgr'/>

pa_mgr
{'hook': {},
 'notype': [],
 'pa_mgr': {<bound method MyRequestHandler.sendAnswer of <__main__.MyRequestHandler instance at 0x011A4CB0>>: []}}
got new client type!


----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 2218)
Traceback (most recent call last):
  File "C:\Python25\lib\SocketServer.py", line 464, in process_request_thread
    self.finish_request(request, client_address)
  File "C:\Python25\lib\SocketServer.py", line 254, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Python25\lib\SocketServer.py", line 522, in __init__
    self.handle()
  File "d:\Programming\Projekte-Python\Central\server.py", line 172, in handle
    line = self.rfile.readline()
  File "C:\Python25\lib\socket.py", line 346, in readline
    data = self._sock.recv(self._rbufsize)
error: (10054, 'Connection reset by peer')
----------------------------------------

Code: Alles auswählen

class MyRequestHandler(SocketServer.StreamRequestHandler):

....

def handle(self):
        while 1:
            line = self.rfile.readline()
            print line
            if not line:
                break
            line = line.strip()
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Hallo,

sollte 'error' die Exception sein, handelst du das so:

Code: Alles auswählen

try:
    <dein code>
except error, data:
    <dein code bei exception>
Gruß
Dr.Network
User
Beiträge: 11
Registriert: Mittwoch 26. März 2008, 12:35

Vielen Dank hab die Lösung nun so:

Code: Alles auswählen

            try:
                line = self.rfile.readline()
            except Exception, errorcode:
                if errorcode[0] == 10054:
                    print "error 10054"
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Du suchst `[mod]socket[/mod].error`. Und anstatt der kryptischen Zahl ``10054`` solltest du die Konstante `[mod]errno[/mod].ECONNRESET` benutzen, da der numerische Wert nicht auf allen Plattformen gleich ist.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
Dr.Network
User
Beiträge: 11
Registriert: Mittwoch 26. März 2008, 12:35

Trundle hat geschrieben:Du suchst `[mod]socket[/mod].error`. Und anstatt der kryptischen Zahl ``10054`` solltest du die Konstante `[mod]errno[/mod].ECONNRESET` benutzen, da der numerische Wert nicht auf allen Plattformen gleich ist.
DANKE! :)
Antworten