我目前正在用Java开发客户端/服务器应用程序,我无法决定如何设计客户端。
目前我有一台可以接受多个连接的服务器,并且每个连接都有一个循环侦听命令并响应它们。服务器如下所示:
try{
mIn = new DataInputStream(mSocket.getInputStream());
mOut = new DataOutputStream(mSocket.getOutputStream());
while(true){
byte tPackType = mIn.readByte();
switch(tPackType){
case PackType.LOGIN:
login();
break;
case PackType.REGISTER:
register();
break;
default:
}
}
}catch (IOException e){
mLog.logp(Level.WARNING, this.getClass().getName(), "run()", "IOException in run()", e);
}finally{
try{
mOut.close();
mIn.close();
mSocket.close();
}catch (IOException e){
e.printStackTrace();
}
}
现在,客户端基本上只是向服务器发送请求并返回响应的多种方法。我希望能够从服务器接收更新。 我将不胜感激任何有助于我找到解决方案的阅读建议。 我可以研究一下吗?
提前谢谢你,
答案 0 :(得分:1)
I want to be able to receive updates from the server
我认为您有两种方法可以做到这一点。
选项1是让您的客户端轮询服务器以进行更新。我不建议这样做,因为这最终会增加您的服务器负载。在您尝试扩展系统时,您很可能会遇到性能问题。
选项2是在您的客户端上创建一个小型服务器。所以基本上,只要有更新,服务器就会连接到客户端并向其发送更新。我建议使用此过程,因为它允许您仅在需要时在服务器和客户端之间建立连接。与之前的方法相反,问题是您需要跟踪客户端的端口和IP。您可以使用客户端ID作为密钥并将其连接属性作为密钥来实现HashTable
。获得更新后,您将在HashTable中查找客户端,获取连接信息,连接并发送信息。
客户端的服务器将获取数据,并在收到更新后执行客户端要执行的任何操作。