设计java客户端

时间:2012-03-29 08:35:58

标签: java client

我目前正在用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();
        }
    }

现在,客户端基本上只是向服务器发送请求并返回响应的多种方法。我希望能够从服务器接收更新。 我将不胜感激任何有助于我找到解决方案的阅读建议。 我可以研究一下吗?

提前谢谢你,

1 个答案:

答案 0 :(得分:1)

I want to be able to receive updates from the server

我认为您有两种方法可以做到这一点。

  • 选项1是让您的客户端轮询服务器以进行更新。我不建议这样做,因为这最终会增加您的服务器负载。在您尝试扩展系统时,您很可能会遇到性能问题。

  • 选项2是在您的客户端上创建一个小型服务器。所以基本上,只要有更新,服务器就会连接到客户端并向其发送更新。我建议使用此过程,因为它允许您仅在需要时在服务器和客户端之间建立连接。与之前的方法相反,问题是您需要跟踪客户端的端口和IP。您可以使用客户端ID作为密钥并将其连接属性作为密钥来实现HashTable。获得更新后,您将在HashTable中查找客户端,获取连接信息,连接并发送信息。

客户端的服务器将获取数据,并在收到更新后执行客户端要执行的任何操作。

相关问题