Alle Socket Fehler ignorieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
coolerj
User
Beiträge: 49
Registriert: Sonntag 15. November 2009, 08:46

Hallo,

Wie kann ich alle Socket Errors/Fehler ignorieren?

MfG
BlackJack

Ausnahmebehandlung. Das sollte jedes gute Python-Buch eigentlich abdecken.

Ausserdem wurde das hier an anderer Stelle schon einmal gezeigt.
coolerj
User
Beiträge: 49
Registriert: Sonntag 15. November 2009, 08:46

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
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Vermutlich spaces und tabs gemischt...
(Verwende einen Editor, der Whitespace darstellt, dann kannst es problemlos verheinheitlichen)
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
coolerj
User
Beiträge: 49
Registriert: Sonntag 15. November 2009, 08:46

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'
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ein gutes Beispiel, dass man Sternchen-Importe vermeiden sollte.
coolerj
User
Beiträge: 49
Registriert: Sonntag 15. November 2009, 08:46

Alles einzelt importiren oder wie
Was muss ich denn alles dann importieren?
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.
coolerj
User
Beiträge: 49
Registriert: Sonntag 15. November 2009, 08:46

Was meinst du denn jetzt damit BlackJack?
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

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' ?
coolerj
User
Beiträge: 49
Registriert: Sonntag 15. November 2009, 08:46

Es geht ja komplett nicht.
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Überleg doch mal:

Du schreibst

Code: Alles auswählen

from socket import *
Was bedeutet das denn? Und was ist dann deiner Meinung nach das 'socket' aus Zeile 28? Das Modul, oder ein Objekt aus dem Modul?
Antworten