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 ()?

Était-ce utile?

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top