2013-12-09 121 views
0

我一直在研究一个程序,它通过套接字连接发送和接收一个字符串到服务器。我用Asynctask打开连接并发送适当的命令,但不管什么都没有发生!我知道发送到服务器的命令是绝对正确的,服务器信息是正确的,所以我很难过!Android Asynctask套接字连接

这里是我的Java代码

new internetRoutesRetrieve().execute(""); 

private class internetRoutesRetrieve extends AsyncTask<String, Void, String> { 
      @Override 
      protected String doInBackground(String... parms) { 
       String userNameSend = userName; 
       String response = null; 
       try { 
        Socket client = new Socket("Hidden", Hidden); 
        DataOutputStream out = new DataOutputStream(client.getOutputStream()); 
        DataInputStream in = new DataInputStream(client.getInputStream()); 
        String command = "SEARCH " + userNameSend; 
        out.writeUTF(command); 
        out.flush(); 
        String responseServer = in.readUTF(); 
        out.close(); 
        in.close(); 
        response = responseServer; 
       } catch (UnknownHostException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
       return response; 
      } 
      @Override 
      protected void onPostExecute(String result) { 
        //This is always null! 
        System.out.println(result); 
       responseIds = result; 
      } 
      @Override 
      protected void onPreExecute() { 


      } 
      @Override 
      protected void onProgressUpdate(Void... values) { 

      } 
     } 
} 

我logcat的,如果有帮助

12-09 02:58:52.925: W/System.err(17598): java.io.EOFException 
12-09 02:58:53.056: W/System.err(17598): at libcore.io.Streams.readFully(Streams.java:83) 
12-09 02:58:53.056: W/System.err(17598): at java.io.DataInputStream.readFully(DataInputStream.java:120) 
12-09 02:58:53.066: W/System.err(17598): at java.io.DataInputStream.decodeUTF(DataInputStream.java:195) 
12-09 02:58:53.066: W/System.err(17598): at java.io.DataInputStream.decodeUTF(DataInputStream.java:190) 
12-09 02:58:53.066: W/System.err(17598): at java.io.DataInputStream.readUTF(DataInputStream.java:186) 
12-09 02:58:53.066: W/System.err(17598): at com.example.app.RouteSelection$internetRoutesRetrieve.doInBackground(RouteSelection.java:145) 
12-09 02:58:53.066: W/System.err(17598): at com.example.app.RouteSelection$internetRoutesRetrieve.doInBackground(RouteSelection.java:1) 
12-09 02:58:53.066: W/System.err(17598): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
12-09 02:58:53.066: W/System.err(17598): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
12-09 02:58:53.066: W/System.err(17598): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
12-09 02:58:53.066: W/System.err(17598): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
12-09 02:58:53.066: W/System.err(17598): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
12-09 02:58:53.066: W/System.err(17598): at java.lang.Thread.run(Thread.java:856) 

感谢所有帮助:)

回答

0

的EOFException类信号,即输入流之前到达其终点它是预期的。看起来你的服务器没有给你足够的数据或无效的数据。

请确保您的服务器上使用了outputStream.writeUTF(...)。