2013-11-21 55 views
3

我必须编写服务器应用程序,请求来自客户端的问题并接收答案。这是我的客户端代码:Java套接字不接收数据

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

+0

很确定这是问题......为什么不把它作为答案发布,所以这就从没有答案的列表中... ...? –

回答

0

Your calling out.print(“a1”);在客户端上,但使用in.readLine()读取服务器上的一行。你不应该在客户端上使用println()写出来,否则服务器永远不会到达行结尾? - CodeChimp 11月21日在21:07

感谢CodeChimp