问题:
项目开发中使用FTP将FTP中的文件上传到AWS,在处理获取文件列表时,发现执行到File[] files = file.listFiles();这段代码时,程序出现卡死阻塞状态。
解决方案:
File[] files = file.listFiles();在这段代码之前加上ftpClient.enterLocalPassiveMode();这段代码就解决了当时的问题。
分析:
ftpClient.enterLocalPassiveMode();加上这段代码的意思就是将连接模式从主动模式改为被动模式。因为FTP服务中涉及客户端与服务端的连接问题,连接就会涉及到端口的打开问题。端口的打开会涉及到主动模式和被动模式,主动模式:客户端开放端口给服务端用;被动模式:服务端开放端口给客户端用。出现阻塞就是端口被客户端的防火墙阻塞掉。