我一直在研究这个问题一段时间,我似乎无法解决这个问题 . 根据我正在运行的内容,我不断陷入for循环或while循环 . 如果这看起来像重复,我很抱歉,但我已经审查了这个pagethis以及其他几个但我无法解决这个问题 .

我设置了一些测试打印以查看正在执行的内容并且它在第一次迭代中运行完全正常,但之后它将卡在reader.readLine() . 在这种情况下它应该只需要一次迭代,因为readLine()将使用它读取的行,这意味着我假设下一行将为null并且while循环将终止,但显然情况并非如此 .

另外,对一个writer.flush()使用多个writer.write(string)是否可以?只是很好奇,因为我也尝试将我的服务器中的两个消息变量分开,然后使用一个刷新,但我仍然遇到了相同的卡住问题 .

客户:

while(!message.equals("Quit") || !message.equals("quit"))
    {
        System.out.println("Test1");
        BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
        System.out.print("Message to send: ");
        message = scanIn.nextLine();
        System.out.println("Test2");
        writer.write(message + "\r\n");
        writer.flush();
        String serverMsg;
        System.out.println("Test3");
        for (String line = reader.readLine(); line != null; line = reader.readLine())
        {
            System.out.println(line);
            System.out.println("Test4");
        }
        /*while ((serverMsg = reader.readLine()) != null)
        {
            if(message.equals("quit") || message.equals("Quit"))
            {
                break;
            }
            System.out.println("Test4");
            System.out.println(serverMsg);
        }*/
        System.out.println("Test5")
    }
    System.out.println("Test6");

服务器:

System.out.println("Server: Running");
    ServerSocket mySocket = new ServerSocket(8189);
    Socket socket = mySocket.accept();
    while (true)
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));   
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
        String message = reader.readLine().trim();
        String message2 = message;
        message = ProjectSQL.avgFromSQL(message.substring(0,1), message.substring(1,2));
        message2 = ProjectSQL.avgFromSQLCurrent(message2.substring(0,1), message2.substring(1,2));
        writer.write(message+"  "+message2+"\r\n");
        writer.flush();
    }

我的文件输出是这个