2017-03-01 9 views
0

私はサーバーから長い文字列データをソケット経由で取得しており、読んでいる問題があります。Androidのソケットで長い文字列を読む問題

データは約10 MBです。

private String createSocketConnection() throws IOException { 
      String result = ""; 

     { 
      String host = ServiceUrlManager.socketIP; 
      int port = ServiceUrlManager.socketPort; 
      InetAddress address = InetAddress.getByName(host); 
      socket = new Socket(address, port); 
      socket.setSoTimeout(timeOut); 
      Log.d(TAG, ":::::Socket Connection " + socket.isConnected()); 
      DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream()); 
      dataOutputStream.write(createMSG()); 
      dataOutputStream.write(sockecData); 
      dataOutputStream.flush(); 

     //Read data from server connection 
      InputStream inputStream = socket.getInputStream(); 


      ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
      byte buffer[] = new byte[1024]; 
      for(int s; (s=inputStream.read(buffer)) != -1;) 
      { 
       baos.write(buffer, 0, s); 

      } 

      String data = ISOUtil.hexString(baos.toByteArray()); 
      result = data.substring(0, baos.toByteArray().length); // response message 
      Log.d(TAG, "::::Response " + result); 

     } 
     return result; 
    } 
+0

あなたはメインスレッドから、または他の 'Thread'でいることをしましたか? –

+0

'読書問題があります。どの問題?例外? logcatを投稿してください。 – greenapps

+0

ByteArrayOutputStreamを使用しないでください。あなたはそんなに多くのメモリを使用しています。バイトをFileOutputStreamに書き込むほうがよい。 – greenapps

答えて

0
BufferedReader in = 
    new BufferedReader(
    new InputStreamReader(inputStream.getInputStream())); 

    StringBuilder sb= new StringBuilder(); 
    while(br.readLine!=null){ 
     sb.append(br.readLine()); 
    } 
関連する問題