2013-04-25 4 views
0

Так что я пытаюсь, чтобы сидеть и слушать, ожидая подключения от клиента. Клиент отправляет через некоторую строку, а сервер выполняет некоторые действия на основе полученных. Теперь мне хотелось бы, чтобы клиент отправил по какой-то команде запрос на возврат данных и сервер получил то, что ему нужно, и отправьте строку обратно.Отправьте строку клиенту по команде JAVA

Не так ли? Ну почему-то я не могу заставить его работать, я думаю, что он не закрывает сокет должным образом. Я не могу понять, почему это не будет или что я делаю неправильно.

Client

String data = ""; 

    DataOutputStream outToServer = null; 
    BufferedReader input; 

    try { 
     outToServer = new DataOutputStream(clientSocket.getOutputStream());   
     outToServer.writeBytes("GETDATA"); 
     outToServer.flush(); 


     input = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 
     data = input.readLine(); 
     Log.d("ANSWER: ", data); 
     input.close(); 


    } catch (IOException e) { 
     Log.d("Error: ", e.toString()); 


    } 

Сервер

ServerSocket listeningSocket = new ServerSocket(9008); 
     BufferedReader fromClient ; 
     PrintStream os; 


     while(true) { 
      Socket clientSocket = listeningSocket.accept(); 
      ServerConnection clientConnection = new ServerConnection(clientSocket); 
      os = new PrintStream(clientSocket.getOutputStream()); 
      fromClient= new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 
      if(fromClient.readLine().equals("GETDATA")){ 
       os.println("DATA"); 
       os.flush(); 
       clientSocket.wait(); 
       clientSocket.close(); 
      } 
      else{ 
      clientConnection.run(); 
      } 
     } 

Любые идеи?

+0

, что это проблема, что случилось, когда вы запускаете код – aymankoo

+0

Что такое ServerConnection – aymankoo

+0

Ничего не происходит, он не регистрирует ничего, успех или исключение. – Dandrews

ответ

0

здесь ваша ошибка

outToServer.writeBytes("GETDATA"); 

правильный код

outToServer.writeBytes("GETDATA\n"); 

, как вы используете Readline вы должны послать полную линию с разрывом строки

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