2 つの Android デバイス間で写真を送信しようとしていますが、転送の問題がわかりません。ワイルループを修正するよう誰かに言われましたが、それでもうまくいきません。プロジェクトをデバイスでテストしたところ、接続に問題はありませんでした。しかし、送信タスクが開始されると、送信クライアントが停止し、「転送エラー」メッセージが受信側に表示されました。私のプログラムに何ができるか知っている人はいますか? ここでは、主に送信と受信の 2 つの部分を示します。
どんな助けにも感謝します。ありがとうございました。
送信部:
s = new Socket("192.168.0.187", 1234);
Log.d("Tag====================","socket ip="+s);
File file = new File("/sdcard/DCIM/Pic/img1.jpg");
FileInputStream fis = new FileInputStream(file);
din = new DataInputStream(new BufferedInputStream(fis));
dout = new DataOutputStream(s.getOutputStream());
dout.writeUTF(String.valueOf(file.length()));
byte[] buffer = new byte[1024];
int len = 0;
while ((len = din.read(buffer)) != -1) {
dout.write(buffer, 0, len);
tw4.setText("8 in while dout.write(buffer, 0, len);");
}
dout.flush();
送信部分はスムーズに動作し、while ループがオーバーした後にエラーは表示されませんでした
受信部:
try {
File file = new File("/sdcard/DCIM/img1.jpg");
DataInputStream din = new DataInputStream(new BufferedInputStream(client.getInputStream()));
bis = new BufferedInputStream(client.getInputStream());
Log.d("Tag====================","din="+s);
FileOutputStream fos = new FileOutputStream(file);
dout = new DataOutputStream(new BufferedOutputStream(fos));
byte[] buffer = new byte[1024];
int len = 0;
while ((len = bis.read(buffer)) != -1) {
dout.write(buffer, 0, len);
}
dout.flush();
dout.close();
} catch (Exception e) {
handler.post(new Runnable() {
public void run() {
tw1.setText("transmission error");
}});
受信部分については、「DataInputStream din = new DataInputStream(new BufferedInputStream(client.getInputStream()));」でもスタックしているようです。そして例外をキャッチします。
再度、感謝します。