Seite 1 von 1
Alle Socket Fehler ignorieren
Verfasst: Samstag 20. März 2010, 15:52
von coolerj
Hallo,
Wie kann ich alle Socket Errors/Fehler ignorieren?
MfG
Verfasst: Samstag 20. März 2010, 16:07
von BlackJack
Ausnahmebehandlung. Das sollte jedes gute Python-Buch eigentlich abdecken.
Ausserdem wurde das hier an anderer Stelle schon einmal gezeigt.
Verfasst: Samstag 20. März 2010, 18:44
von coolerj
ja aber es geht jetzt bei meinen neuen Code nicht.
Aber trotzdem Danke
Code: Alles auswählen
# -*- encoding: utf-8 -*-
from socket import *
import sys
# Der Standard-Echo-Port ist nicht sehr nützlich, da er root
# Rechte erfordert. Wir nehmen den Port 50000
ECHO_PORT = 50000
BUFSIZE = 1024
def main():
# TCP-Socket erstellen und an Port binden
s = socket(AF_INET, SOCK_STREAM)
s.bind(('', ECHO_PORT))
s.listen(1)
print "Server gestartet"
# Warte auf eine Verbindung zum Server
conn, (remotehost, remoteport) = s.accept()
print 'Verbunden mit %s:%s' % (remotehost, remoteport)
try:
# Empfange daten vom Client
data = conn.recv(BUFSIZE)
print "Echo: %s" % (data)
except socket.error as error:
print error
raise
# Socket schließen
s.close()
if __name__ == '__main__':
main()
Eroro:
File "C:\Users\cheffe\server\server_2.py", line 28
except socket.error as error:
^
IndentationError: unindent does not match any outer indentation level
Verfasst: Samstag 20. März 2010, 18:50
von ms4py
Vermutlich spaces und tabs gemischt...
(Verwende einen Editor, der Whitespace darstellt, dann kannst es problemlos verheinheitlichen)
Verfasst: Samstag 20. März 2010, 18:56
von coolerj
Welchen Editor zum Beispiel?
So habe gelöst jetzt kommt aber
File "C:\Users\cheffe\server\server_2.py", line 35, in <module>
main()
File "C:\Users\cheffe\server\server_2.py", line 27, in main
except socket.error as error:
AttributeError: type object '_socketobject' has no attribute 'error'
Verfasst: Samstag 20. März 2010, 19:17
von cofi
Ein gutes Beispiel, dass man Sternchen-Importe vermeiden sollte.
Verfasst: Samstag 20. März 2010, 19:18
von coolerj
Alles einzelt importiren oder wie
Was muss ich denn alles dann importieren?
Verfasst: Samstag 20. März 2010, 19:22
von BlackJack
@coolerj: Entweder alles einzeln importieren, oder nur das Modul und dann alles über den Modulnamen ansprechen, oder wenn Sternchenimport, dann eben *nicht* versuchen es über den Modulnamen zu machen. Mach Dir den Fehler den Du da bekommst mal klar. Was ist bei Dir an den Namen `socket` gebunden und was bedeutet dann `socket.error`!? Und was müsste gelten, damit dass das bedeutet was Du eigentlich haben wolltest!?
Edit: Was Du alles importieren musst, hängt davon ab was Du alles verwenden willst. Um ein Objekt anzusprechen muss es halt einen Namen haben, bzw. musst Du halt irgendwie dran kommen können.
Verfasst: Samstag 20. März 2010, 19:24
von coolerj
Was meinst du denn jetzt damit BlackJack?
Verfasst: Samstag 20. März 2010, 20:24
von BlackJack
Womit genau?
Verfasst: Samstag 20. März 2010, 22:03
von Pekh
Du fängst die Ausnahme, wirfst sie in Zeile 30 aber gleich wieder. Ignorieren sieht irgendwie anders aus ... Vielleicht probierst du es mal ohne das 'raise' ?
Verfasst: Samstag 20. März 2010, 22:06
von coolerj
Es geht ja komplett nicht.
Verfasst: Sonntag 21. März 2010, 08:33
von Pekh
Überleg doch mal:
Du schreibst
Was bedeutet das denn? Und was ist dann deiner Meinung nach das 'socket' aus Zeile 28? Das Modul, oder ein Objekt aus dem Modul?