正在从服务器向客户端发送文件 java
Sending file from Server to Client java
当我发送一个小文件时,一切正常。但是当我试图发送一个大约 5 兆字节的文件时,服务器抛出这样的异常:java.net.socketexception: connection reset by peer: socket write error
.
这是我服务器的一部分:
try {
File myFile = new File("E:\work\java\in.pdf");
long len = myFile.length();
byte[] mybytearray = new byte[(int) myFile.length()];
output = new PrintStream(serviceSocket.getOutputStream());
output.println(clientCounter + " " + len);
bis = new BufferedInputStream(new FileInputStream(myFile));
bis.read(mybytearray, 0, mybytearray.length);
os = serviceSocket.getOutputStream();
os.write(mybytearray, 0, mybytearray.length);
os.flush();
serviceSocket.close();
}
catch(IOException e) {
System.out.println(e);
}
您假设 read()
填满了缓冲区,毫无疑问您也在客户端中犯了同样的错误。你必须循环。
当我发送一个小文件时,一切正常。但是当我试图发送一个大约 5 兆字节的文件时,服务器抛出这样的异常:java.net.socketexception: connection reset by peer: socket write error
.
这是我服务器的一部分:
try {
File myFile = new File("E:\work\java\in.pdf");
long len = myFile.length();
byte[] mybytearray = new byte[(int) myFile.length()];
output = new PrintStream(serviceSocket.getOutputStream());
output.println(clientCounter + " " + len);
bis = new BufferedInputStream(new FileInputStream(myFile));
bis.read(mybytearray, 0, mybytearray.length);
os = serviceSocket.getOutputStream();
os.write(mybytearray, 0, mybytearray.length);
os.flush();
serviceSocket.close();
}
catch(IOException e) {
System.out.println(e);
}
您假设 read()
填满了缓冲区,毫无疑问您也在客户端中犯了同样的错误。你必须循环。