我需要编写一个服务器应用程序,从客户端请求问题并接收答案。这是我的客户端代码:
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;
客户端成功发送问题,但后来没有收到服务器的答复,而是一直在读取临时变量时进入了无限循环。这是什么问题?
out.print("a1");
,但是在服务器端却使用了in.readLine()
来读取一行内容。你应该在客户端使用println()
输出数据,否则服务器可能无法读取完整的一行内容。 - CodeChimp