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

时间:2018-01-14 20:19:56

标签: telnet ansi-escape

所以,我在python(使用twisted)设置中有一个聊天服务器,用户使用telnet连接。问题是,当有人在其他人输入消息时发送消息时,发送的消息将覆盖正在键入的消息。我目前的解决方案是删除光标所在的行(使用\033[2K ANSI转义序列,然后是\r),并将其替换为消息,但显然,人们不会喜欢它每当其他人发送消息时,他们的草稿消息就会被删除我试图使用转义序列

  1. 保存光标的位置,
  2. 转到该行的开头,
  3. 插入消息后跟新行,
  4. 返回到已保存的位置然后向下一行返回消息。
  5. 但是,草稿消息会被发送的消息覆盖,而不是被推到一边。所以我的问题是,有没有办法在草稿之前插入已发送的消息而不覆盖它,然后将光标返回到消息以进一步输入?

1 个答案:

答案 0 :(得分:0)

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