要建立聊天,我必须发送和接收消息。
当前,我正在从命令行发送和接收消息。
当我在键入消息时收到一条消息时,收到的消息将被打印,并且看不到之前键入的内容。我使用read()
命令捕获用户输入。
这里是一个示例:
假设我要发送消息Hello World
,并且在键入Hello Wor
后收到消息。
这就是发生的事情:
$ Enter your message : Hello Wor
$ Somebody: This is a message
$ Enter your message :
但是Hello Wor
仍在命令行上:如果按Delete键,则会看到Hello Wo
。
这就是我想要的:
$ Enter your message : Hello Wor
$ Somebody: This is a message
$ Enter your message : Hello Wor
我想保存打印收到的消息之前输入的内容并打印出来。
答案 0 :(得分:1)
在不使用诸如curses
或ncurses
之类的终端控制API的情况下,您需要将程序更改为按以下方式工作:
getchar
}。
[Enter]
,这是不可取的,而您可以使用线程同步原语来防止此错误,最好使用异步改为使用IO API。stdio
关键字的作用)在C#和JavaScript中)。await
之类的库来为您处理。ncurses
覆盖),编写收到的消息,然后重新编写用户输入的不完整信息输入(如果有的话)换行。