在 telnet 中,插入文本而不是覆盖

In telnet, insert text instead of overwriting

因此,我在 python(使用扭曲)设置中有一个聊天服务器,用户使用 telnet 连接到该服务器。问题是,当有人发送消息而其他人正在键入消息时,已发送的消息将覆盖正在键入的消息。我目前的解决方案是删除光标所在的行(使用 3[2K ANSI 转义序列,然后是 \r),并将其替换为消息,但显然,如果每次其他人发送草稿消息时,他们的草稿消息都会被删除。我尝试使用转义序列

  1. 保存光标位置,
  2. 转到行首,
  3. 插入消息后跟一个新行,
  4. return 转到保存的位置并向下移动一行以转到消息。

但是,草稿消息会被发送的消息覆盖,而不是被推到一边。所以我的问题是,有没有办法在草稿之前插入已发送的消息而不覆盖它,然后 return 光标到消息以进一步键入?

我设法避免创建自己的客户端,而是使用 stty -icanon && nc {CHAT IP} {CHAT PORT}。在服务器端,我创建了一个缓冲区来保存正在键入的消息,并相应地对其进行编辑并在收到退格键的字符代码时重新打印它。当它接收到箭头键的字符代码时,它会跟踪光标并发送转义码以相应地移动光标。