2013-11-21 4 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; 

Вопросы успешно отправлены и позже получили от клиента, но сервер никогда не получить ответ (бесконечный цикл при чтении переменной TEMP). В чем проблема?

+6

Ваш вызова 'out.print ("a1");' на клиенте, но читает строку на сервере с помощью 'in.readLine () '. Разве вы не должны писать с помощью 'println()' на клиенте, иначе сервер никогда не дойдет до конца строки? – CodeChimp

+0

Довольно уверен, что это проблема ... Почему бы не опубликовать это как ответ, так что это выходит из оставшегося без ответа списка ...? –

ответ

0

Ваш звонок out.print ("a1"); на клиенте, но чтение строки на сервере с помощью in.readLine(). Разве вы не должны писать с помощью println() на клиенте, иначе сервер никогда не дойдет до конца строки? - CodeChimp 21 ноя в 21:07

Спасибо за CodeChimp

Смежные вопросы