从java多线程客户端 - 服务器体系结构中的run()方法调用方法

时间:2014-04-15 23:09:53

标签: java multithreading

我试图在run()方法中调用其他方法。但只有当我退出/终止客户端连接时,方法才会显示输出。 例如:当客户端发出listall命令时,应该打印listall方法。但只有在客户端终止连接时才会调用它。

任何人都可以告诉我这里我做错了什么

public void run(){

        try {
            System.out.println("Client socket : "+ clientSocket);
            clientPortNumber=clientSocket.getPort();
            clients.add(clientSocket);
            String line;

            while(true) {

                line=is.readLine();
                //System.out.println(line);
                if(line==null)
                    break;
                String temp[]=line.split(" ");

                if(temp[0].equals("ADD")) {
                addRfc();//add method invocation
                }

                else if(temp[0].equals("LOOKUP"))
                send(os);//send method invocation

                else if(temp[0].equals("ListAll")) {
                    listAll(); /*listall method should print when cient gives listall command. But it gets invoked only when client terminates the connection*/
                } else if(line.equalsIgnoreCase("quit"))    {
                    break;
                }
            }
        }
        catch (IOException e) {
            System.out.println(e);
        }
    }

1 个答案:

答案 0 :(得分:1)

检查客户端的实现。听起来客户端是缓冲的,您需要在服务器收到请求之前刷新请求。