天天看點

org.apache.commons.net.ftp.FTPClient 下載下傳檔案提示Software caused connection abort: recv failed

今天在使用FTPClient下載下傳檔案時,登入成功了,但是提示下圖所示的錯誤資訊:

org.apache.commons.net.ftp.FTPClient 下載下傳檔案提示Software caused connection abort: recv failed

出現這個問題,本以為設定的讀取檔案目錄不對,嘗試修改多次無果。為了排除路徑的問題,在firefox中安裝了插件“FireFTP”,連接配接上之後,可以正常下載下傳,于是該問題排除。

org.apache.commons.net.ftp.FTPClient 下載下傳檔案提示Software caused connection abort: recv failed

嘗試把防火牆關閉,再次運作程式,發現檔案能夠正常下載下傳了。如下圖所示:

org.apache.commons.net.ftp.FTPClient 下載下傳檔案提示Software caused connection abort: recv failed

此問題解決。

更深層次解析:

      主動方式的FTP是這樣的:用戶端從一個任意的非特權端口N(N>1024)連接配接到FTP伺服器的指令端口,也就是21端口。然後用戶端開始監聽端口N+1,并發送FTP指令“port N+1”到FTP伺服器。接着伺服器會從它自己的資料端口(20)連接配接到用戶端指定的資料端口(N+1)。     針對FTP伺服器前面的防火牆來說,必須允許以下通訊才能支援主動方式FTP:         1. 任何大于1024的端口到FTP伺服器的21端口。(用戶端初始化的連接配接)      2. FTP伺服器的21端口到大于1024的端口。 (伺服器響應用戶端的控制端口)     3. FTP伺服器的20端口到大于1024的端口。(伺服器端初始化資料連接配接到用戶端的資料端口)     4. 大于1024端口到FTP伺服器的20端口(用戶端發送ACK響應到伺服器的資料端口)

從第3條,可以看出伺服器端時會主動向用戶端進行連接配接的,是以,本地需要關閉防火牆才能完成資料的下載下傳。

繼續閱讀