2013-12-08 42 views
1

我试图实现一个简单的套接字,从服务器发送和接收字符串。Android套接字连接冻结

下面的代码是冻结应用程序,不知道如果我做了什么明显错误?

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; 
} 

感谢

编辑:看来程序,当我试图挽救从服务器上的Android应用适当的客户端服务器通信的响应

+0

哪个线程运行这个? –

+0

我没有使用线程作为目标api是8 – user2321428

+0

不知道我在跟着,这显然运行在客户端,Android用户线程运行这个?或其他线程? –

回答

0

看到AsyncTask冻结。

如果你不这样做,我会试试看,你会通常得到android.os.NetworkOnMainThreadException