У меня есть базовый клиент и сервер чата командной строки на Python, но это применимо, возможно, к любому языку. Я столкнулся с очень очевидной проблемой, и я не уверен, будет ли вокруг нее какой-нибудь способ (кроме использования графического интерфейса, который быстро решает проблему). Когда сервер отправляет клиенту сообщение, в результате чего клиент отправит сообщение print()
, оно будет вставлено в том же месте, где человек будет вводить собственное сообщение, в результате чего он будет разделен входящим сообщением. Например (записываются в виде # комментария, чтобы избежать странной подсветки синтаксиса):Если возможно, как можно остановить печать на stdout от прерывания того, что было напечатано?
# Client1: Knock-knock!
# Client2: Who's there?
# Client1: Interrupting cow!
# Client2: Inter
# Client1: MOOOOOOO
# Client2: rupting cow who?
Где Client2 не попало ввести так набрав Who's there?
.
Таким образом, очевидно, что в GUI есть всевозможные обходные пути, такие как панели, но мне любопытно узнать, есть ли способ реализовать это строго в командной строке native/command. Я не мог найти ничего такого, как во время моего поиска в Интернете, для решения! Благодаря!
(пение) GUI! GUI! GUI! Серьезно, хотя, что именно вы хотите? Вы хотите, чтобы сообщение Client1 было напечатано * только после того, как возвращаются образы Client2? Или вы хотите, чтобы сообщение Client1 было префиксом '\ n', так что оно оставляет пробелы для Client2, чтобы завершить ввод? (Но в этом случае, что, если Client2 создает несколько строк?) – tehsockz
GUI GUI. Меня больше интересует, возможно ли это! Это чат-клиент, он должен обновляться в реальном времени, невероятно сложно провести разговор, когда вам нужно набрать сообщение, чтобы увидеть ответ на сообщение, напечатанное ранее! Поэтому я бы хотел, чтобы он печатал сообщение Client1 и перемещал то, что Client2 вводил под новопринятым сообщением, чтобы они могли печатать, как ничто никогда не происходило. – Andrew