Python 'Asynchat' Chat Server - заставить клиента ждать, пока сервер не будет

StackOverflow https://stackoverflow.com//questions/24058686

  •  26-12-2019
  •  | 
  •  

Вопрос

Я создал простой сервер чата с помощью модуля Asynchat в Python.Мое намерение состоит в том, чтобы заставить клиентов чата ждать, пока не работает сервер.

Я попытался сделать это, используя ручку_connect_event, настройки подключения к true thinge, как:

def handle_connect_event(self):
        self.connected = True
.

Тогда я включаю в команду CONNECT, пока не станет подключенным:

while not self.connected:
    try:
        self.connect((host, port))
    except:
         time.sleep(1)
.

Я прочитал в коде диспетчера Asyncore, что, когда соединение успешно, Ship_Connect_Event называется:

def connect(self, address):
    self.connected = False
    err = self.socket.connect_ex(address)
    # XXX Should interpret Winsock return values
    if err in (EINPROGRESS, EALREADY, EWOULDBLOCK):
        return
    if err in (0, EISCONN):
        self.addr = address
        self.handle_connect_event()
    else:
        raise socket.error(err, errorcode[err])
.

Поэтому я верю, когда соединение создано код в Handle_connect_event, должен быть срабатывает, тем самым настройка подключена к True, тем самым нарушая мою петлю.Однако это не происходит.

Никто знает почему?И, если этот метод не прав, как мы зарабатываем клиентами чата ждать сервера?

Я новичок в этих вещах, поэтому, пожалуйста, объясните, что я помню, я новичок :)

Это было полезно?

Решение

Я думаю, моя машина была ума была на некоторое время, но мой код работает :) Я могу запустить 2 клиентских машинах, а затем запустить сервер и получить задачи.

Лучшее чувство когда-либо!:)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top