通过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文件可以打开并完美播放。
请建议如何解决此问题。
答案 0 :(得分:0)
您正在将缓冲区大小写为long
,但您不是在阅读它。所以long
被读作图像的一部分。由于写入发送缓冲区大小与接收方无关,因此您应该从发送方中删除writeLong(mybytearray.length)
来电。