2014-02-10 3 views
0

Я открыл обычный java-сокет в своем приложении Android, и я должен использовать его для отправки запросов и получения ответов, я обычно отправляю запросы, но не получаю никакого ответа от сервера, я проверял подключения к серверу, и это в порядке, и я также пытался слушать через Hercules и посылаются запросы, как правило, и сервер отправляет ответ, как правило, это обычный сокет кодирования я использую:Почему мой сокет не получает ответ?

public static void xbmc_connect(){ 
    try { 
     xbmc_socket = new Socket(xbmc_address, xbmc_port); 
    } catch (UnknownHostException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
public static void xbmc_sendingDataToSystem(String data) throws IOException{ 

    xbmc_output = new DataOutputStream(xbmc_socket.getOutputStream()); 
    xbmc_output.writeBytes(data); 

} 

public String xbmc_getServerResponse() throws JSONException{ 

    String responseLine, server_response = null_string; 

     try { 
      xbmc_input = new BufferedReader(new InputStreamReader(
        xbmc_socket.getInputStream())); 
      System.out.println(xbmc_input.toString());// doesn't print anything 
    } catch (IOException e) { 
    } 
    try { 
     while ((responseLine = xbmc_input.readLine()) != null) { 
      server_response = server_response + responseLine ; 
     } 

      return server_response; 

} 

ответ

2

Короче говоря: xbmc_input является BufferedReader. Для чтения из BufferedReader вы должны использовать либо read(), либо readLine().

Не имеет смысла получить представление BufferedReader от toString(), как вы это делаете. Вызов toString() не дает BufferedReader распечатать все, что он мог получить. toString() просто печатает BufferedReader объект - , то есть ссылка на объект.

Поэтому, чтобы напечатать то, что было на самом деле получил (если что-нибудь), вы можете попробовать:

System.out.println(xbmc_input.readLine()); 
+0

я просто положить его для тестирования, я не хочу, чтобы напечатать что-нибудь читаемый, я просто хочу это дает мне какой-либо результат, который заставляет меня знать, что он получает что-либо, и, кстати, я сделал его для печати с такой же строкой чтения, а также ничего не дал. – MRefaat

+1

Печать BufferedReader с помощью toString() не говорит вам, получено ли что-либо. Вы должны вызывать 'read()' или 'readLine()'. Однако теперь я вижу, что вы делаете это в цикле while по крайней мере. В приведенном выше надписью catch сделайте 'e.printStackTrace()', чтобы убедиться, что исключение не выбрасывается. –

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