我正在尝试编写一个接受文件的服务器,并使用 DataInputStream 和 BufferedInputStream 将其写入某个目录。
服务器获取“用户名(字符串)”“文件数(整数)”“文件名(字符串)”“每个文件的大小(长)”和“未解释字节的文件内容(字节 [])”
如果一切顺利,我应该发送布尔值。
但问题是它没有正确接收文件。
有时我会收到“断管”错误消息或收到后文件已损坏。
修复了问题..
我正在尝试编写一个接受文件的服务器,并使用 DataInputStream 和 BufferedInputStream 将其写入某个目录。
服务器获取“用户名(字符串)”“文件数(整数)”“文件名(字符串)”“每个文件的大小(长)”和“未解释字节的文件内容(字节 [])”
如果一切顺利,我应该发送布尔值。
但问题是它没有正确接收文件。
有时我会收到“断管”错误消息或收到后文件已损坏。
修复了问题..
一件可能与您的问题有关的小事。您应该通过实际读取的字节数减少文件大小变量,而不是请求读取的字节数:
while(fileSize>0){
if(fileSize < byteSize)
byteSize = (int)fileSize;
int byteRead = din.read(b, 0, byteSize);
fos.write(b);
fileSize -= byteRead; // <-- See here
}
如果在读取输入时,发送方关闭了连接,您可能会收到此错误。它可能与您的代码无关。发件人可能已经超时,在传输完成之前关闭了连接,或者许多其他事情。