pitón asyncore conectividad
Pregunta
¿Hay una manera de comprobar la conexión está establecida en asyncore?
Una vez asyncore.loop () se llama, ¿cómo puedo desconectar la comunicación entre el servidor?
¿Puedo simplemente llamar a close ()?
Solución
Una vez asyncore.loop () se llama, el control es entregado a bucle de eventos que se ejecuta.
Cualquier código después de la asyncore.loop () se llamará sólo después de que el ciclo de eventos se ha cerrado.
bucle de eventos va a reaccionar a diversos eventos y manejadores de las llamadas. Para cerrar el bucle de eventos, debe llamar a una parada en uno de los controladores de eventos donde tiene sentido.
Por ejemplo: Tome una mirada en el siguiente ejemplo.
Código 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 se llama dentro de uno de los controladores de eventos - handle_read. En este caso, después de que los datos se han recibido del servidor. se desconecta.
Referencias:
Otros consejos
¿Hay una manera de comprobar la conexión está establecida en asyncore?
Uso con tomas de corriente, que puede sobrecargar handle_connect () método de asyncore.dispatcher para funcionar cuando se conecta socket:
import asyncore
class MyClientConnection(asyncore.dispatcher):
def handle_connect(self):
'''Socket is connected'''
print "Connection is established"
Si prefiere votación, leer la variable conexión en su asyncore.dispatcher:
myclient = MyClientConnection()
isConnected = myClient.connected