Python Asyncore Connectivity
Вопрос
Есть ли способ проверить соединение на Asyncore?
Как только asyncore.loop () называется, как я могу отключить связь между сервером?
Могу ли я просто просто позвонить близко ()?
Решение
Как только asyncore.loop () вызывается, контроль передан на цикл события, которая работает.
Любой код после asyncore.loop () будет вызываться только после того, как контур событий был выключен.
Контур событий будет реагировать на различные события и обработчики вызовов. Чтобы выключить контур события, вы должны позвонить, чтобы остановиться в одном из обработчика событий, где это имеет смысл.
Для бывшего примера посмотрите на следующий пример.
Код из: 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 называется внутри одного из обработчика событий - Handle_read. В этом случае после получения данных были получены с сервера. Это отключается.
Использованная литература:
Другие советы
Есть ли способ проверить соединение на Asyncore?
Используя с розетками, вы можете перегружать handle_connect () метод asyncore.dispatcher. Чтобы запустить, когда сокет подключен:
import asyncore
class MyClientConnection(asyncore.dispatcher):
def handle_connect(self):
'''Socket is connected'''
print "Connection is established"
Если вы предпочитаете опрос, прочитайте переменную связаны В вашем asyncore.dispatcher:
myclient = MyClientConnection()
isConnected = myClient.connected