无法从android上的socket打开收到的amr / jgp文件

时间:2016-04-10 07:27:07

标签: java android sockets jpeg amr

通过Wifi通过套接字发送和接收文件我使用了以下代码...

客户端:

private

服务器端:

Socket socket = new Socket(dstAddress, dstPort);
            int bufferSize=socket.getReceiveBufferSize();
            InputStream in=socket.getInputStream();
            DataInputStream clientData = new DataInputStream(in);
            String fileName = clientData.readUTF();
            System.out.println(fileName);
            OutputStream output = new FileOutputStream("/sdcard/"+fileName);

            byte[] buffer = new byte[bufferSize];
            int read;
            while((read = clientData.read(buffer)) != -1){
                output.write(buffer, 0, read);
            }


            //close every thing
            output.flush();
            output.close();
            socket.close();

此时我从服务器接收文件'test.amr'而不更改其原始大小。 但是当我尝试在客户端设备中播放该文件时,它无法播放。

注意:使用上述代码收到的mp3,avi和txt文件可以打开并完美播放。

请建议如何解决此问题。

1 个答案:

答案 0 :(得分:0)

您正在将缓冲区大小写为long,但您不是在阅读它。所以long被读作图像的一部分。由于写入发送缓冲区大小与接收方无关,因此您应该从发送方中删除writeLong(mybytearray.length)来电。