У меня есть один TCP-сервер и два подключенных клиента. Это игра ti c ta c, поэтому клиенты делают свои ходы один за другим. Сервер отправляет пакет клиенту, чтобы сказать, что он позволяет вводить, а второй клиент просто ждет. Проблема в том, что второй клиент, ожидающий, может что-то написать, но не отправит на сервер до своей очереди. вывод сервера . второй клиент . Так что проблема в том, что когда повороты превращаются во второго клиента, и он что-то написал перед этим, он отправляется на сервер. Как я могу «очистить» все до того, как «Ваша очередь, введите (строка строки)»
«Ваша очередь, введите (строка строки)» - означает отправленный сервером пакет и ждать пользователя input
«Все в порядке» - означает, что пользовательский ввод доставлен на сервер
Сервер:
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())