我正在尝试使用套接字发送bmp图像。我在android上有这样的代码:
ByteArrayOutputStream stream = new ByteArrayOutputStream();
MainActivity.bmp.compress(Bitmap.CompressFormat.JPEG, 20,
stream);
byte[] byteArray = stream.toByteArray();
OutputStream os = echoSocket.getOutputStream();
os.write(byteArray,0,byteArray.length);
os.flush();
并在PC上:
InputStream in_ = clientSocket.getInputStream();
OutputStream out_ = new FileOutputStream("filename.bmp");
final byte[] buffer = new byte[1024];
int read = -1;
int i = 0;
while ((read = in_.read(buffer)) != -1) {
out_.write(buffer, 0, read);
System.out.println(i);
i++;
}
in_.close();
out_.close();
System.out.println("Done");
它永远不会到达最后一行(println(“完成”))。它只会在我关闭android程序时,它到达最后一行并且bmp成功打开。问题是in_.read在android完成传输后等待,我无法使其工作。
答案 0 :(得分:1)
你永远不会关闭设备端的socket / OutputStream,因此PC端不知道没有更多数据,所以它只是在while循环中旋转,一次读取0个字节。
此外,如果您要使用我的解决方案,请在previous thread.
中将我标记为已接受的答案