チャット クライアントの送信オプションを作成しようとしていますが、小さなファイルではできましたが、大きなファイルで実行しようとすると問題が発生しました。私がそれを解決しようとした方法は次のとおりでした:クライアント側、ファイルから読み取り、送信:
while ((buf = bin.read(bytearray, 0, bytearray.length)) != -1) {
os.write(bytearray,0,bytearray.length);
}
bin.close();
「bin」は fileInputStream からの私の bufferedInputStream です。「buf」は単なる整数です。os は私の DataOutputStream です。サーバー側、送受信:
while ((buf = in.read(bytes, 0, bytes.length)) != -1) {
dos.write(bytes,0,bytes.length);
}
"in" は DataInputStream、"buf" は整数、"dos" は DataOutputStream (すべてのクライアントに対してこれを行います) クライアント側、サーバーからファイルを受信し、ハード ドライブに書き込みます。
int buf;
while ((buf = in.read(bytes, 0, bytes.length)) != -1) {
fos.write(bytes,0,bytes.length);
}
fos.close();
ここで、「in」は DataInputStream、「fos」は FileOutputStream です。最初のクライアントで送信ボタンを押すと、サーバーとクライアントの両方がファイルの受信を開始しますが、2 番目のクライアント (レシーバー) を閉じたときにのみ受信されます。実際には、ファイルの受信を停止して書き込みを終了することを決定します。送信が一度実行され、dataInputStream がサーバーで空である必要があるときに「-1」を受信しない理由を教えてください。したがって、「-1」が発生します。