2013-11-21 168 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