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