我正在进行文件传输(Socket-Java)程序,我将加密版本的文件发送到客户端。客户端将对其进行解密并存储在其驱动器中。
我使用CipherOutputStream和CipherIputStream进行加密和解密。我的问题是在加密时我需要关闭CipherOutputStream,否则文件没有在客户端接收。我需要在发送文件后收到客户端的确认,因为我关闭了服务器中的CipherOutputStream,它没有从客户端接收消息。它抛出Socket关闭异常。
是否有另一种方法可以将加密格式的文件发送到客户端,以便客户端将其解密并将其存储在其存储库中。
请提供一些建议。
答案 0 :(得分:0)
关闭流后,您无法发回数据以确认已成功接收该文件。
正如我在评论中所写,您可以先将文件的长度发送给客户端,以便客户端知道它必须读取多少字节。一旦客户端读取了这个数据量,客户端就可以发送回确认,因为流没有关闭。一旦服务器收到确认,它就可以关闭流或启动另一次传输。