Как принимать данные от нескольких клиентов одновременно? - PullRequest
0 голосов
/ 30 апреля 2019

Я пишу основанную на зуммере программу на Python. Это касается удаленно расположенных клиентов, поэтому я использую модуль socket в Python 2.7.15. Я использовал модуль Threading для подключения нескольких клиентов одновременно. Тем не менее, я сталкиваюсь с трудностями при приеме зуммера от всех клиентов.

Когда один пользователь нажимает зуммер, его входные данные доставляются на сервер только после того, как все остальные пользователи нажали свои зуммеры (катастрофа). Вот соответствующие фрагменты кода:

  1. Поток создается каждый раз, когда появляется новое соединение:
while allowConnections:
    client, address = SERVER.accept()
    addresses[client] = address    
    client.send(welcomeMessage.decode('ascii'))

    clientManage = Thread(target=clientHandler)
    clientManage.start()
  1. Место приема входных сигналов зуммера в clienthandler:
index = 0
while buzzer == "":
      buzzer = addresses[index].recv(256).decode('ascii')
      index += 1
      index %= NO_OF_USERS


    client = addresses.keys()[index]
    client.send("\nYou can answer now!".encode('ascii'))
    answerReceived = str(client.recv(1024).decode('ascii')

Как я могу получить данные от всех клиентов, без учета задержки одного из клиентов из-за других клиентов? Я пытался заглянуть в модуль выбора, но не вижу, как это поможет.

...