【发布时间】:2020-03-29 09:49:25
【问题描述】:
我有一个 tcp 服务器和两个连接的客户端。这是一个井字游戏,所以客户一个接一个地移动。服务器向客户端发送一个数据包,表示它允许输入,而第二个客户端只是等待。问题是当第二个等待它的客户端可以写一些东西时,它直到轮到它才会发送到服务器。 server output。 second client。 所以问题是当轮到第二个客户端时,他在它之前写了一些东西,它被发送到服务器。如何在“轮到你,输入(行列)”之前“清除”所有内容
"Your turn, enter (row col)" - 表示服务器发送数据包,等待用户输入
“一切正常” - 表示将用户输入传递到服务器
服务器:
if is_x:
players[0].send(b'\0x01')
client_move = sock_manipulation.receive_move(players[0])
if client_move:
players[0].send('Everything ok'.encode())
print(f'Client move: {client_move}')
else:
print('Nothing received!')
is_x = False
else:
players[1].send(b'\0x01')
client_move = sock_manipulation.receive_move(players[1])
if client_move:
players[1].send('Everything ok'.encode())
print(f'Client move: {client_move}')
else:
print('Nothing received!')
is_x = True
客户:
while 1:
command = sock.recv(2048)
if command == b'\0x01':
move = pickle.dumps(input('Your turn, enter (row col): ').split())
sock.send(move)
accept = sock.recv(2048)
print(accept.decode())
【问题讨论】:
-
您要清除屏幕上的输出吗?
-
不,不是输出。第二个客户在“轮到你了……”之前写了一些东西,我想忽略它,并征求意见。