Seite 1 von 1

SocketServer -> Daten ausserhalb von 'handle' empfangen!

Verfasst: Sonntag 31. Oktober 2004, 17:50
von Gast
Moin!

Ich arbeite gerade mit dem SocketServer-Modul. Der Server funktioniert auch ohne Probleme, nur weiß ich nicht wie ich in der Klasse Daten empfangen kann (außerhalb der handle-Funktion)!?

So weit bin ich zur Zeit:

Code: Alles auswählen

class myServer(SocketServer.BaseRequestHandler):
    def handle(self):
        print "** New connection from %s!" % self.client_address[0]

        # Test-String an den neuen Client senden
        self.request.send("Hallo Welt!")

        #Daten empfangen und ausgeben
        print ">>",self.request.recv(1024)
(Hab den Code ein bisschen gekürzt. Hoffentlich funktioniert er so :oops: )

Also was ist z.B. wenn ich 10 Sekunden nachdem der Client auf meinen Server rauf ist, von ihm eine Nachricht geschickt bekomme?? Da ist ja handle nicht mehr aktiv!

Verfasst: Sonntag 31. Oktober 2004, 18:05
von Milan
Hi. Dann musst du handle in eine endlosschleife stecken... schaus dir hier aus einem altem Code von mir an. Denn wenn handle nicht mehr aktiv ist, ist der Socket der Verbindung schon wieder geschlossen und somit besteht keine Verbindung mehr.
Oder du verwendest einen anderen Ansatz, nämlich die über Module asyncore und asynchat.

mfg Milan

Verfasst: Sonntag 31. Oktober 2004, 18:47
von Gast
Aber wenn ich in handle eine Endlosschleife reinmache, kann ich doch den Request von anderen Clients nicht mehr annehmen oder?

Verfasst: Sonntag 31. Oktober 2004, 20:01
von Milan
Hi. Dann hast du dir mein Code net genau angeschaut :wink: . Denn das wäre ja wirklich dumm. Also: die Handlerklasse ist nur dafür da, eine einzige Anfrage zu bearbeiten. Für die Entgegennahme von Anfragen ist die Serverklasse zuständig, welche auch Threads oder Forking einsetzen kann. Und genau das mach ich ja auch, wie du ganz unten in den Source sehen kannst :wink: .

mfg Milan