我正在编写一个多线程套接字聊天。有没有办法在用户输入之前的某个时间获取控制台输入?
我们说我输入了一条消息,当我输入消息时,服务器会向我发送消息。在我正在撰写的消息之后,服务器的消息将立即打印出来。
外观如何:
Me>Hey!
Server>Heya!
Me>How are yServer>Hello!
如果可能的话,我想保存" y"字符串,删除它并在服务器输出后再次粘贴它:
Me>Hey!
Server>Heya!
Server>Hello!
Me>How are y
答案 0 :(得分:2)
你的问题归结为两个不同的问题。第一个是按字符从stdin或控制台字符读取输入。这本身就很棘手,因为阅读输入的最常见方法只能做整行。
你面临的第二个问题是在屏幕上来回走动,因为你必须更新当前输入和新收到的消息,这很可能,但是这样做的方式在很大程度上取决于你的终端类型而且它是功能:
http://unix.stackexchange.com/questions/43945/whats-the-difference-between-various-term-variables
对所有操作系统上所有可能的$ TERM值正确执行此操作也相当棘手。你可以使用像jcurses这样的库做得更好:
https://github.com/sunhong/jcurses
将此抽象远离你。