Java/Command 终端:防止终端输入被传入的打印语句中断

Java/Command Terminal: Prevent typing in terminal from getting cut off by incoming print statements

我正在尝试使用 Java 的 UDP DatagramSockets 和 DatagramPackets 在两台计算机(服务器和客户端)之间制作一个非常简单的聊天程序。

虽然他们能够成功地相互发送消息并在彼此的终端上打印消息,我发现的一个限制是如果我正在写东西并且有一个传入消息,我自己的输入将被中断。 这是由于使用打印语句在终端上显示传入的消息。一个例子:

我想知道 是否有任何类型的工具、框架甚至获取终端输入的方法可以帮助防止我们输入的句子出现这种显示中断。

存在模拟 VT100 等“智能”终端的框架。 (大约 50 年前,VT100 在 hay-day 时曾被认为非常智能。)一旦有了这样的终端仿真器,您就可以将光标定位在终端内任何你想要的位置 window,(终端的屏幕)通过调用某些 class 的方法,或者通过发出 ANSI 转义序列 (看它向上)并且您写入终端的任何文本都将写入光标的位置,因此您将能够将传出文本与传入文本分开。

A google 搜索“vt100 emulator for java”会产生几个结果,第一个在 GitHub 上,(因此,完整的源代码可用,)并且由none 除了 JetBrains,这家公司还生产了非常棒的 IntelliJ IDEA IDE.

但是,我建议不要这样做,因为您的聊天应用程序会很笨重,而且它的外观和感觉会像七十年代。

使用 java 的 built-in 图形系统 (AWT/Swing) 创建一个简单的 window 有两个文本区域,一个用于传入文本,一个用于传出文本。伟大的 interwebz 上有很多(我的意思是,很多)示例代码实例,它们可以使用 Swing 做很多事情,所以您甚至应该能够找到 ready-to-run Java 中使用 Swing 的示例聊天应用程序。