有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

对等方重置spring Java连接:socket写入错误

我试图用Java Spring Boot实现基本的FTP客户机,我遇到了这个问题,我想问你,你是否有使用它的经验

我让我的Tomcat服务器运行,并将我的计算机置于睡眠模式,大约3小时后,我唤醒电脑,服务器仍在运行,因此我尝试呼叫端点(该端点应检查连接,然后将文件上载到FTP服务器),但我收到以下异常消息:

Connection reset by peer: socket write error

你认为这是因为电脑长时间处于睡眠状态而失去连接造成的,还是其他原因造成的?如果是的话,我该如何处理这个案子

当我重启服务器时,文件正常上传

以下是我的端点类:

    @PostMapping("/upload")
    public String uploadFile(@RequestParam("file") MultipartFile file) {
        try {
            FTPClient ftpClient = Connection.getFtpClient();

            if (!Connection.isConnected()) { Connection.connect(); }

            ftpClient.changeWorkingDirectory("/AiDisk_a1/usb/");
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

            InputStream inputStream = new BufferedInputStream(file.getInputStream());
            ftpClient.storeFile(file.getOriginalFilename(), inputStream);

            return "Status: " + ftpClient.getReplyString();
        }
        catch (IOException ex) {
            System.out.println("Endpoint exception: " + ex.getMessage());
            return "Endpoint exception: " + ex.getMessage();
        }
    }

谢谢你的建议


共 (1) 个答案

  1. # 1 楼答案

    我认为你需要使用logout()disconnect()

    logout() throws IOException
    

    通过发送QUIT命令注销FTP服务器

     } finally {
        ftp.logout();
        ftp.disconnect();
      }
    

    在执行任何操作之前,必须首先使用connect连接到服务器,在与服务器完全交互后,最后断开连接。 FTPClient