0

我正在尝试使用套接字发送 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("Done") )。仅当我关闭 android 程序时,它才会到达最后一行并且 bmp 成功打开。问题是在 android 完成传输后 in_.read 等待,我无法使其工作。

4

1 回答 1

1

您永远不会关闭设备端的套接字/输出流,因此 PC 端不知道没有更多数据,因此它只是在 while 循环中旋转,一次读取 0 个字节。

另外,如果您要使用我的解决方案,请在您 之前的帖子中将我标记为已接受的答案。

于 2013-06-02T17:09:35.150 回答