我有一个服务器,它接受多个客户端连接,并且我希望它仅在以下情况下才停止接受连接:第一个连接的客户端(ClientID = 1,为接收到新连接分配了ClientID)检测到键盘输入“ S”它的控制台。每个客户端由服务器上的不同线程处理。基本上是这样的...
服务器代码:
someBoolean = False
while not someBoolean:
accept() a client connection
Assign/Send ClientID [1, 2, 3, ...]
Add client connection information to a list
Thread(target = someFunction).start() to handle request for each client
def someFunction():
global someBoolean
send ClientID to the client
if ClientID == 1:
if "*" is received:
someBoolean = True
send "HI" too all connected clients
客户代码:
connect() to host (server)
Receive ClientID [1, 2, 3, ...] as assigned by server
If ClientID == 1:
Function to detect "S" key press
If key press is detected, then inform server (Send something like "*")
Else if ClientID > 1:
Wait to receive some information from server like "HI"
由于我正在维护客户端列表,因此一旦服务器从ID = 1的客户端接收到“ *”,我就可以向所有连接的客户端发送“ HI”。服务器中的主while
循环等待接受我运行服务器后立即连接。接受客户端连接后,它将再次循环返回并等待另一个客户端连接。如果我在ID = 1的客户端上按“ S”,则确实将消息“ *”发送到服务器,并且如上所述,所有客户端都收到了“ HI”。
这里的主要问题是,当我在ID = 1的客户端上按while
时,"S"
循环不会终止,因为到我在键盘上按"S"
时,服务器已经在等待接受新的连接。
关于使用线程处理客户端请求时如何持续接受套接字连接的任何建议?