1

我正在做一个项目,我必须在其中编写一个聊天客户端。对于这个项目,我们不能使用 UI,它必须用 Java 编写。我已经有一段时间没有使用 Java 了,所以我发现自己一直在努力寻找“Java”的方式来做某事。

我想要做的是允许处理传入的数据并将其打印到控制台,但同时允许输入。我知道同时进行非阻塞输入/输出并不是一项简单的任务(有时甚至是不可能的),但幸运的是,这也不是我想要的。描述我想要什么的最好方法是让输出被处理、显示和打印,直到用户输入开始。

我知道这可以在 C/C++ 中使用 switch 语句来完成,但据我发现在 Java 中没有等价物。我遇到了 nio 包,并已开始阅读它,但到目前为止还无济于事。

关于如何最好地使用 Java 的工具集执行此任务有什么建议?另外,如果不清楚,我很抱歉,我很难用语言表达我的愿望。

4

2 回答 2

1

所以最后我最终选择了Graham King 博客中这篇文章中的信息。除此之外,我使用单个线程对传入数据进行排队,然后在输入完成后打印它们。

在用户输入开始之前,传入的数据会打印到屏幕上,然后暂停,然后在用户输入结束时显示在用户输入发生期间接收到的所有数据。

于 2012-11-11T01:39:55.547 回答
0

通常的 java 方法是使用多个线程——两个专用于每个连接(一个输入,一个输出),加上处理与连接不直接相关的东西所需的任何其他线程。

或者,您可以通过 java.nio 包使用非阻塞 I/O,但它有点笨拙。

于 2012-10-26T00:59:10.113 回答