0

Java でソケットを使用してファイルを送信しようとしています。問題はこれです: 97kb のファイルがあるとします。約 95.8kb を取得し、さらに待機しますが、ライターは 97kb をすべて送信しました。

読書:

FileOutputStream fout = new FileOutputStream(fl);
int counter = 0;
byte[] byt = new byte[8192];
BufferedInputStream bin = new BufferedInputStream(cli.InputStream());
int count = 0;

while((count = bin.read(byt)) > 0)
{
    counter = counter + count;
    Log.d("TINTERACT", String.valueOf(count) + " _" + String.valueOf(counter) + " _" +  String.valueOf(size));
    fout.write(byt, 0, count);
}

fout.flush();
fout.close();

書き込み中は次のとおりです。

System.out.println("Starting writing");
FileInputStream fIn = new FileInputStream(path);
byte[] byt = new byte[8192];
BufferedInputStream bin = new BufferedInputStream(fIn);
BufferedOutputStream bout = new BufferedOutputStream(ser.OutputStream());

int count = 0, countr = 0;
while((count = bin.read(byt)) > 0)
{
    System.out.println(count);
    bout.write(byt, 0, count);
    countr = countr + count;
}

bout.flush();
System.out.println("sent " + countr + "End");
bin.close();

ライターが完了し、リーダーがすべてのバイトを取得せずにループ待機する間、合計バイト数を送信します

4

2 に答える 2

1

ソケットから読み取る受信者ループは、送信者がソケットを閉じるまで終了しません。

于 2013-06-28T18:31:57.830 に答える