Я пишу основанную на зуммере программу на Python. Это касается удаленно расположенных клиентов, поэтому я использую модуль socket
в Python 2.7.15. Я использовал модуль Threading
для подключения нескольких клиентов одновременно. Тем не менее, я сталкиваюсь с трудностями при приеме зуммера от всех клиентов.
Когда один пользователь нажимает зуммер, его входные данные доставляются на сервер только после того, как все остальные пользователи нажали свои зуммеры (катастрофа).
Вот соответствующие фрагменты кода:
- Поток создается каждый раз, когда появляется новое соединение:
while allowConnections:
client, address = SERVER.accept()
addresses[client] = address
client.send(welcomeMessage.decode('ascii'))
clientManage = Thread(target=clientHandler)
clientManage.start()
- Место приема входных сигналов зуммера в
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')
Как я могу получить данные от всех клиентов, без учета задержки одного из клиентов из-за других клиентов? Я пытался заглянуть в модуль выбора, но не вижу, как это поможет.