python asyncore connectivité
Question
est-il un moyen de vérifier la connexion est établie dans asyncore?
une fois asyncore.loop () est appelée, comment puis-je déconnecter la communication entre le serveur?
je peux tout simplement appeler close ()?
La solution
Une fois asyncore.loop () est appelée, le contrôle est remis à boucle d'événements qui fonctionne.
Tout code après la asyncore.loop () sera appelé seulement après la boucle d'événement a été arrêté.
boucle de l'événement réagira à divers événements et gestionnaires d'appels. Pour arrêter la boucle d'événement, vous devez appeler à arrêter dans l'un des gestionnaire d'événements où il est logique.
Ex: Jetez un oeil à l'exemple suivant.
code de: 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 est appelé à l'intérieur de l'un des gestionnaire d'événements - handle_read. Dans ce cas, après que les données ont été reçues du serveur. il se déconnecte.
Références:
Autres conseils
est-il un moyen de vérifier la connexion est établie dans asyncore?
Utilisation avec les sockets, vous pouvez surcharge handle_connect () méthode asyncore.dispatcher à exécuter lorsque la prise est connectée:
import asyncore
class MyClientConnection(asyncore.dispatcher):
def handle_connect(self):
'''Socket is connected'''
print "Connection is established"
Si vous préférez polling, lire la variable connecté dans votre asyncore.dispatcher:
myclient = MyClientConnection()
isConnected = myClient.connected