Java套接字未接收到数据。

3

我需要编写一个服务器应用程序,从客户端请求问题并接收答案。这是我的客户端代码:

clientSocket = new Socket("localhost", 1234);
        System.err.println("Client started");
//get questions
        ObjectInputStream in = new ObjectInputStream(clientSocket.getInputStream());
        Question q = (Question)in.readObject();
//send answer
        PrintWriter out = new PrintWriter(clientSocket.getOutputStream());
        out.print("a1");
        out.flush();

和服务器代码:

//sending questions
ObjectOutputStream out = new ObjectOutputStream(client.getOutputStream());
        List<Question> quest = Questions.getInstance().getQuestions();
        out.writeObject(quest.get(0));
        out.flush();
    //get answer
        BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
        String temp = null;
        while ((temp = in.readLine()) == null) {}
        String answer = temp;

客户端成功发送问题,但后来没有收到服务器的答复,而是一直在读取临时变量时进入了无限循环。这是什么问题?


6
你在客户端调用了 out.print("a1");,但是在服务器端却使用了 in.readLine() 来读取一行内容。你应该在客户端使用 println() 输出数据,否则服务器可能无法读取完整的一行内容。 - CodeChimp
很确定这就是问题所在...为什么不把它发布为答案,这样就可以从未回答的列表中移除了呢? - Stefan Haustein
1个回答

0
你在客户端调用了 out.print("a1"),但是在服务器上使用 in.readLine() 读取一行。难道你不应该在客户端使用 println() 输出,否则服务器永远无法到达行末?- CodeChimp Nov 21 at 21:07
感谢 CodeChimp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接