Как отправить вывод проклятий клиенту с помощью сокетов - PullRequest
0 голосов
/ 27 марта 2019

Я работаю над настройкой простой модели сервер / клиент, используя python, следующим образом.Цель состоит в том, чтобы клиент мог контролировать вывод кадров curses.

Я уже сделал несколько базовых примеров многопоточных эхо / чатов, поэтому мне удалось отправить текстовую информацию туда и обратно.Проблема в том, что я не знаю, как отправить любую другую информацию.Например, я использовал curses для создания «игры», в которой игрок может перемещать «спрайт» (фактически, фрагмент текста) вверх / вниз / вправо / влево.Как бы это было сделано через сокетную связь?В идеале клиент должен управлять спрайтом только с помощью клавиатурных команд, а сервер должен «передавать» графику обратно клиенту.Когда клиент подключается к серверу, именно клиент должен видеть выходные данные curses и иметь возможность управлять им, пока логика управляется сервером.

Единственное, что действительно сработало, этонастройка в стиле эха, когда текст отправляется туда и обратно.Когда я пытаюсь отправить (что я считаю, это) вывод кадра, то вывод отображается на стороне сервера (см. Код ниже).

Давайте предположим, что все остальное настроено (соединения через сокет, ошибкаобработка).Соответствующие вещи, которые я пробовал, это

connection.sendall(wrapper(draw))

на стороне сервера и

print(s.recv())

на стороне клиента, где s - рассматриваемый сокет.Здесь ничья похожа на

def draw(screen):
    # set up screen
    screen.addstr(sprite)
    # refresh screen

, а обертка - это обертка.Эта функция рисует рамку проклятий со спрайтом на ней.

Первым шагом является вывод на экран вышеупомянутого экрана через сервер на стороне клиента.Следующим шагом является отправка ввода с клавиатуры на сервер, который должен вывести соответствующий кадр клиенту.На этом этапе кадр вытягивается на стороне сервера, и больше ничего не происходит.Я благодарен за любые подсказки / советы о том, как решить эти две проблемы.Пожалуйста, дайте мне знать, если какая-либо информация отсутствует.Заранее спасибо.

...