Domanda

c'è un modo per controllare il collegamento è stabilito in asyncore?

Una volta asyncore.loop () viene chiamato, come posso staccare la comunicazione tra server?

Posso semplicemente chiamare close ()?

È stato utile?

Soluzione

Una volta asyncore.loop () viene chiamato, il controllo viene consegnato al ciclo di eventi che viene eseguito.

Ogni codice dopo l'asyncore.loop () verrà chiamato solo dopo che il ciclo degli eventi è stato spento.

ciclo Evento reagirà a vari eventi e gestori di chiamata. Per arrestare il ciclo di eventi, si deve chiamare per fermare in una delle gestore di eventi in cui ha senso.

Per esempio: Date un'occhiata al seguente esempio.

Codice da: 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 si chiama all'interno di uno del gestore eventi - handle_read. In questo caso, dopo che i dati sono stati ricevuti dal server. Si scollega.

References:

Altri suggerimenti

  

c'è un modo per controllare il collegamento è stabilito in asyncore?

Utilizzo con prese di corrente, è possibile sovraccarico di handle_connect () Metodo di asyncore.dispatcher eseguire quando presa è collegato:

import asyncore

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

Se si preferisce il polling, leggere la variabile connected nella tua asyncore.dispatcher:

myclient = MyClientConnection()
isConnected = myClient.connected
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top