Q:用FTPClient,執行到ftp.storeFile(fileName, inputFile);無反應了
A: ftpclient.enterLocalPassiveMode();
ftp.storeFile(fileName, inputFile);問題解決
原因是:FTP協議有兩種工作方式:PORT方式和PASV方式,中文意思為主動式和被動式。 PORT(主動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請 求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,客戶端在命令鏈路上用PORT 命令告訴服務器:“我打開了XXXX端口,你過來連接我”。於是服務器從20端口向客戶端的 XXXX端口發送連接請求,建立一條數據鏈路來傳送數據。 PASV(被動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請 求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,服務器在命令鏈路上用PASV 命令告訴客戶端:“我打開了XXXX端口,你過來連接我”。於是客戶端向服務器的XXXX端口 發送連接請求,建立一條數據鏈路來傳送數據。