Python asyncore Konnektivität
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 ()?
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