telnet セッションの入力行をバッファーから削除して、Enter キーを押すと、入力したテキストが削除されますが、telnet サーバーには送信されますか?
カーソルを行の先頭に移動し、その行を新しい行で上書きする特定の文字を送信する方法があることは知っていますが、新しい行の文字がバッファに入れられるため、それを超えることはできません. これを回避する方法はありますか?
例: (2 行目はユーザー入力です)
Welcome to my imba text game!
pick up axe
次に、Enter キーを押すと、スクリーン バッファが次のように表示されます。
Welcome to my imba mud game!
[You picked up the axe]
アップデート:
重要なのは、ローカル入力をエコーしないモードにtelnetクライアントを設定することだと思います。クライアントにいくつかのマジック キャラクタを送信すると、モードを変更できることがわかりました。この例を見つけましたが、それが何を意味するのかわかりませんが、入力が telnet クライアントに表示されなくなります。ただし、入力がサーバーに送信されることはないため、答えの半分に過ぎません。
socket.send("\377\375\042\377\373\001")
たぶん、入力を1行ずつ読んでいるからでしょう。char by charとして読みたいと思います。ただし、これを変更する方法がわかりません:
fileobj = socket.makefile()
while True:
line = fileobj.readline()
...