2013-12-08 7 views
1

Я пытаюсь реализовать простой сокет, который отправляет и получает строки с сервера.Android socket connect freezing

Следующий код замораживает приложение, не уверен, что я сделал что-то явно неправильное?

public String internetRoutesRetrieve(String userName) { 
    String command = null; 
    String response = null; 
    Socket socket = null; 
    DataOutputStream dataOutputStream = null; 
    DataInputStream dataInputStream = null; 

    try { 
     socket = new Socket("Hidden IP", HiddenPort); 
     dataOutputStream = new DataOutputStream(socket.getOutputStream()); 
     dataInputStream = new DataInputStream(socket.getInputStream()); 
     command = "SEARCH <" + userName + ">"; 
     dataOutputStream.writeUTF(command); 
     response = dataInputStream.readUTF(); 
    } catch (UnknownHostException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    finally { 
     if (socket != null) { 
      try { 
       socket.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     if (dataOutputStream != null) { 
      try { 
       dataOutputStream.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     if (dataInputStream != null) { 
      try { 
       dataInputStream.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
    return response; 
} 

Благодаря

Edit: Кажется, программа замораживания, когда я пытаюсь сохранить ответ от сервера

+0

какой поток запустить это? –

+0

Я не использую нить, поскольку цель api равна 8 – user2321428

+0

Не уверен, что я следую, это, очевидно, выполняется на стороне клиента, работает ли пользовательский поток Android? или какой-то другой поток? –

ответ

0

см AsyncTask для надлежащей связи клиент-сервер на Android приложения.

вы бы обычно получали android.os.NetworkOnMainThreadException, если вы этого не сделаете, но я бы попробовал.