服务器无法识别文件的结尾 - java
问题描述:
所以我有一个Java客户端服务器应用程序。当我试图发送单个文件到服务器(使用SSLSockets)时,它工作正常(因为连接在发送文件的字节数组后立即关闭)。虽然,只要我尝试发送第二个文件inputStream阅读器循环挂起(可能在传输之后接收更多字节?IDK)。我将编写稍微修改过的代码块,以便在下面看到结构。服务器无法识别文件的结尾 - java
客户
OutputStream = sslsocket.getOutputStream();
public void sendFile(Path pathOfFile){
byte[] bytesToSend = Files.readAllBytes(pathOfFile);
out.write(bytesToSend);
out.flush();
}
服务器
public void receiver(File file){
InputStream in = sslsocket.getInputStream();
byte[] fileBytes = new byte[sslsocket.getReceiveBufferSize()];
int temp = 0;
while ((temp = in.read(fileBytes)) > 0) { // stalls after a couple of reads
file.write(fileBytes , 0, temp);
}
}
,所以如果我关闭sendFile
方法后一切直接连接工作正常。但是,如果我甚至在调试和断点处运行客户端后,直接在sendFile
方法之后,服务器就会冻结while
循环的read()
方法。到底是怎么回事??
此代码不能编译。真正的代码是什么样的?注意在编辑之前,您的磁贴既更具体也更准确:将其卷回。 – EJP
我没有从没有互联网访问的另一台机器复制它。代码块与我的实际相同。 – Rakim
不,他们不是。没有'getReceivedBufferSize()'这样的方法。这是一个错字。 – EJP