TCP服务器 - 客户端,服务器不向客户端发送日期

时间:2014-02-03 16:53:17

标签: java tcp client-server

我将简单的应用程序写入通信客户端 - 服务器。 从客户端向服务器发送数据非常有效。服务器计算一些东西并尝试发送到客户端结果,但它不起作用。 这是客户代码:

 public static void main(String argv[])  
{   
    try
    {
        View view = new View();
        view.printStartMessage();
        view.printManual();
        String input;
        String output;
        BufferedReader inFromUser = new BufferedReader( new InputStreamReader(System.in));
        Socket clientSocket = new Socket("localhost", 6789);
        DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
        BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        do
        {
            if (inFromServer.ready())
            {
                output = inFromServer.readLine();
                view.print(output);
            }
            input = inFromUser.readLine();    
            outToServer.writeBytes(input + "\n");
        }
        while(!"EXIT".equals(input));

        clientSocket.close();
    } 
    catch (IOException ex)
    {
        Logger.getLogger(TCPClient.class.getName()).log(Level.SEVERE, null, ex);
    }
} 

这里是服务器:

 public static void main(String argv[])     
{          
    try
    {
        Protocol protocol = new Protocol();
        View view = new View();
        String clientData;
        ServerSocket welcomeSocket = new ServerSocket(6789);
        while(true)
        {
            Socket connectionSocket = welcomeSocket.accept();
            BufferedReader inFromClient =
                    new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
            DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
            while ((clientData = inFromClient.readLine()) != null)
            {
                view.print("Odebrano: " + clientData);
                if("EXIT".equals(clientData))
                {
                    break;
                }
                protocol.checkUsersInput(clientData);
                if(protocol.isError())
                {
                    outToClient.writeBytes(protocol.getError());
                    view.printError(protocol.getError());
                    break;
                }
                if (protocol.isResultReady())
                {
                    outToClient.writeBytes(protocol.getResult());
                    view.print(protocol.getResult());
                }
            }
            break;
        }
    } 
    catch (IOException ex)
    {
        Logger.getLogger(TCPServer.class.getName()).log(Level.SEVERE, null, ex);
    }
}

我甚至不知道是什么产生问题,客户端或服务器。 任何人都有任何想法? 感谢您的建议。

编辑:

好的,问题解决了。服务器没有发送结束行标记,因此readLine方法只是不知道行结束的位置。

0 个答案:

没有答案