在Enter之前读取当前控制台输入

时间:2016-01-20 22:55:33

标签: java multithreading sockets

我正在编写一个多线程套接字聊天。有没有办法在用户输入之前的某个时间获取控制台输入?

我们说我输入了一条消息,当我输入消息时,服务器会向我发送消息。在我正在撰写的消息之后,服务器的消息将立即打印出来。

外观如何:

Me>Hey!
Server>Heya!
Me>How are yServer>Hello!

如果可能的话,我想保存" y"字符串,删除它并在服务器输出后再次粘贴它:

Me>Hey!
Server>Heya!
Server>Hello!
Me>How are y

1 个答案:

答案 0 :(得分:2)

你的问题归结为两个不同的问题。第一个是按字符从stdin或控制台字符读取输入。这本身就很棘手,因为阅读输入的最常见方法只能做整行。

你面临的第二个问题是在屏幕上来回走动,因为你必须更新当前输入和新收到的消息,这很可能,但是这样做的方式在很大程度上取决于你的终端类型而且它是功能:

http://unix.stackexchange.com/questions/43945/whats-the-difference-between-various-term-variables

对所有操作系统上所有可能的$ TERM值正确执行此操作也相当棘手。你可以使用像jcurses这样的库做得更好:

https://github.com/sunhong/jcurses

将此抽象远离你。