Java android tcp客户端文件接收

Java android tcp客户端文件接收,java,android,sockets,Java,Android,Sockets,我正试图通过套接字将一个文件(具体为png)从python服务器发送到android客户端。我知道我的python服务器正在发送数据,但我不知道如何在android端接收数据。下面是接收文件的代码 String path = Environment.getExternalStorageDirectory().toString() +"/tmp/test.png"; try { socket = new Socket("192.168.1.

我正试图通过套接字将一个文件(具体为png)从python服务器发送到android客户端。我知道我的python服务器正在发送数据,但我不知道如何在android端接收数据。下面是接收文件的代码

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

谢谢您的建议。

您正在从套接字中读取1K个数据块,并将它们保存到一个文件中。然后尝试将最后一个块解释为位图。这不管用


保存后从文件中读取图像,或者将其全部缓冲在内存中。

您正在从套接字中读取1K个块,并将其保存到文件中。然后尝试将最后一个块解释为位图。这不管用


保存后从文件中读取图像,或将其全部缓冲在内存中。

如何将其全部缓冲在内存中?例如?你可以使用像
java.io.ByteArrayOutputStream
wow dude,谢谢你,我真不敢相信我没有意识到我只想读最后一块…愚蠢…非常感谢。我该如何在内存中缓冲它呢?例如?你可以使用像
java.io.ByteArrayOutputStream
wow dude,谢谢你,我真不敢相信我没有意识到我只想读最后一段……愚蠢……非常感谢。