0

ソケットを使用して bmp イメージを送信しようとしています。私はアンドロイドにそのようなコードを持っています:

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上:

String q = SockIn.readLine();
File file = new File("filename.bmp");

FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(q);

bmp ファイルでは、最大 401 バイトしか取得できません。これはもちろん、破損した bmp イメージです。私は何を間違っていますか?

MODIFIED 変更された 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が正常に開きます

4

2 に答える 2