0

我正在尝试编写一个接受文件的服务器,并使用 DataInputStream 和 BufferedInputStream 将其写入某个目录。

服务器获取“用户名(字符串)”“文件数(整数)”“文件名(字符串)”“每个文件的大小(长)”和“未解释字节的文件内容(字节 [])”

如果一切顺利,我应该发送布尔值。

但问题是它没有正确接收文件。

有时我会收到“断管”错误消息或收到后文件已损坏。

修复了问题..

4

2 回答 2

3

一件可能与您的问题有关的小事。您应该通过实际读取的字节数减少文件大小变量,而不是请求读取的字节数:

       while(fileSize>0){
            if(fileSize < byteSize)
                byteSize = (int)fileSize;
            int byteRead = din.read(b, 0, byteSize);
            fos.write(b);
            fileSize -= byteRead; // <-- See here
        }
于 2011-10-07T14:36:18.770 回答
0

如果在读取输入时,发送方关闭了连接,您可能会收到此错误。它可能与您的代码无关。发件人可能已经超时,在传输完成之前关闭了连接,或者许多其他事情。

看看这个相关的问题:How to fix java.net.SocketException: Broken pipe?

于 2011-10-07T14:36:57.180 回答