如何同时从多个客户端获取输入?

时间:2019-04-30 18:54:47

标签: python-2.7 sockets python-multithreading

我正在用Python编写一个基于蜂鸣器的测验程序。它涉及到远程客户端,因此我正在使用Python 2.7.15中的socket模块。我使用了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')

如何在不使一个客户端由于其他客户端而延迟的情况下,从所有客户端获取输入?我试图研究选择模块,但看不出有什么帮助。

0 个答案:

没有答案