我目前正在开发一个Java客户端/服务器应用程序,我无法决定如何设计客户端。设计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();
}
}
现在,客户基本上只是一个数字的向服务器发送一个请求方法和返回响应。我希望能够从服务器接收更新。 我会很感激任何关于阅读的建议,可以帮助我找到解决方案。 有没有我可以看到的模式?
谢谢你,veLr。
选项3是客户端连接到服务器,但等待服务器通过连接发送更新。这样可以避免轮询,还可以避免服务器启动连接回客户端,这在涉及防火墙时往往会导致问题。 (加上它很奇怪。) – Wyzard 2012-03-29 08:42:30
@Wyzard:如果我正确理解你,你希望客户端在服务器上打开一个端口并保持打开状态而不做任何事情? – npinti 2012-03-29 08:45:00
打开*连接*,但是。 (“打开端口”意味着要么监听传入的连接,要么配置防火墙以允许通过连接。)客户端启动连接,因为它知道服务器的地址,服务器不需要知道所有客户端的连接,地址。但是一旦连接,服务器就知道什么时候需要发送更新,而客户端不知道。所以服务器启动更新。 – Wyzard 2012-03-29 08:51:18