Frage

ist es eine Möglichkeit, Verbindung zu prüfen ist in asyncore etabliert?

einmal asyncore.loop () aufgerufen wird, wie kann ich trenne die Kommunikation zwischen Server?

kann ich nenne nur einfach close ()?

War es hilfreich?

Lösung

Sobald asyncore.loop () aufgerufen wird, wird die Steuerung zur Ereignisschleife übergeben, die ausgeführt wird.

Jeder Code nach dem asyncore.loop () wird erst nach der Ereignisschleife abgeschaltet wurde aufgerufen werden.

Ereignisschleife wird auf verschiedene Ereignisse und Anrufabwicklungen reagieren. Zur Abschaltung der Ereignisschleife, müssen Sie rufen in einem der Event-Handler zu stoppen, wo es Sinn macht.

Für die Ex: Werfen Sie einen Blick auf das folgende Beispiel.

-Code aus: http://www.mechanicalcat.net/richard/log/Python / A_simple_asyncore__echo_server__example

import asyncore, socket

class Client(asyncore.dispatcher_with_send):
    def __init__(self, host, port, message):
        asyncore.dispatcher.__init__(self)
        self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
        self.connect((host, port))
        self.out_buffer = message

    def handle_close(self):
        self.close()

    def handle_read(self):
        print 'Received', self.recv(1024)
        self.close()

c = Client('', 5007, 'Hello, world')
asyncore.loop()

self.close ist innerhalb einer von der Event-Handler genannt - handle_read. In diesem Fall, nachdem die Daten wurden vom Server empfängt. es trennt sich.

Referenzen:

Andere Tipps

ist es eine Möglichkeit, Verbindung zu prüfen ist in asyncore etabliert?

Mit mit Steckdosen, können Sie Überlastung handle_connect () Methode asyncore.dispatcher laufen, wenn Buchse angeschlossen ist:

import asyncore

class MyClientConnection(asyncore.dispatcher):
    def handle_connect(self):
        '''Socket is connected'''
        print "Connection is established"

Wenn Sie Polling bevorzugen, lesen Sie die Variable verbunden in Ihrem asyncore.dispatcher:

myclient = MyClientConnection()
isConnected = myClient.connected
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top