2012-09-11 1 views
1

파이썬 서버에서 안드로이드 클라이언트로 소켓을 통해 파일 (특정 png)을 보내려고합니다. 내 파이썬 서버가 데이터를 보내는 것을 알고, 나는 안드로이드 측면에서 데이터를 수신하는 방법을 알아낼 수 없습니다. 다음은 파일을받는 코드의 모양입니다.android tcp 클라이언트 파일 받기

String path = Environment.getExternalStorageDirectory().toString() +"/tmp/test.png";  
     try { 
      socket = new Socket("192.168.1.129", 29877); 

      is = socket.getInputStream(); 
      out = new FileOutputStream(path); 
      byte[] temp = new byte[1024]; 
      for(int c = is.read(temp,0,1024); c > 0; c = is.read(temp,0,1024)){ 
       out.write(temp,0,c); 
       Log.d("debug tag", out.toString()); 
      } 
      Log.d("debug tag", temp.toString()); 

      Bitmap myBitmap = BitmapFactory.decodeByteArray(temp, 0, temp.length); 
      imageView.setImageBitmap(myBitmap); 

어떤 조언을 주셔서 감사합니다.

답변

1

소켓에서 1K 청크로 읽고 파일에 저장하고 있습니다. 그런 다음 의 마지막 청크 인을 비트 맵으로 해석합니다. 이것은 작동하지 않습니다.

이미지를 저장 한 후 파일에서 이미지를 읽거나 메모리에 모두 버퍼링하십시오.

+0

어떻게 메모리에 전체를 버퍼링하겠습니까? 예? – user1661396

+0

'java.io.ByteArrayOutputStream'과 같은 것을 사용할 수 있습니다. http://docs.oracle.com/javase/6/docs/api/java/io/ByteArrayOutputStream.html –

+0

와우 멋쟁이, 내가 마지막 덩어리 만 읽으려고한다는 것을 깨닫지 못해 ... 어리석은 ... 고마워. – user1661396