我正在尝试为聊天客户端创建发送选项,并且我能够为小文件执行此操作,但是当我尝试使用大文件执行此操作时遇到了问题。我试图解决它的方法是:客户端,从文件中读取并发送:
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。发生的情况是,当我在第一个客户端上点击发送按钮时,服务器和客户端都开始接收文件,但只有在我关闭第二个客户端(接收器)时才会收到它,因为那是套接字关闭的时候,可能就是它的时候实际上决定停止接收并完成写入文件。请告诉我为什么在发送执行一次时它没有收到那个“-1”,并且服务器中的 dataInputStream 应该是空的,因此导致那个“-1”?