【发布时间】:2017-02-17 14:01:08
【问题描述】:
我正在为一个小型即时消息应用程序创建一个服务器类。当我尝试让服务器连接到单个客户端时,一切正常,但我试图将其扩展为连接到多个客户端。我已经测试过,它能够连接到多个客户端,但问题在于我无法同时读取所有客户端的输入。
我是否需要为每个客户端打开一个新线程来不断检查输入?我觉得这非常低效。
这是检查来自客户端的输入的代码,这些输入目前存储在一个 Arraylist 中。我相信它类似于扫描仪,在有输入之前它不会继续执行代码。
private void chat() throws IOException{
String message = " You are now connected! ";
sendMessage(message);
ableToType(true);
do{
try{
//right now it is only checking the first (0) client
message = (String) inputs.get(0).readObject(); // this is the line that checks for inputs
showMessage("\n" + message, new java.awt.Color(20, 124, 34));
}catch(ClassNotFoundException classNotFoundException){
showMessage("\nUnreadable Message Sent by Client");
}
}while(!message.contains("END"));
}
【问题讨论】:
-
当你有这个简单的例子工作时,你还可以查看 java.nio 包,了解如何处理一个或几个线程的多个连接。
标签: java multithreading server