ftpClient鏈結成功後程式一直停在那沒有反應

2021-08-24 19:01:21 字數 2219 閱讀 3749

今天碰到很奇怪的現象: 我原來的ftp的**在區域網內執行時一切成功。但是當我鏈結外網時就出現了意象不到的結果:程式已經可以登入的外網的遠端伺服器的上面,後台還列印出:230 logged on .  然後程式就一直在那裡不動了(一直在執行中),不知道是什麼原因了??

網上也找了一大堆的資訊,結果沒有什麼效果。那個小夥子他換了個包,即他沒把apache的包換成其它的ftp包了。我本來也想換的,我試了下結果有太多的錯誤了。索性不換了,因為我相信apache的包是比較完整的不可能出現我這樣的情況,肯定是我的**有問題了。

就憑著上面我那種想法,終於功夫不負有心人,原因被我找到了,現在共享給大家用。

ftpclient.enterlocalpassivemode();

設定它為被動模式就可以搞定這個問題了。即用"被動模式傳輸"。它可以設定在login之後或者之前都可以,我自己是設定在login之後。**如下:

public void connectserver()

ftpclient.enterlocalpassivemode();

} catch (exception e)

} }

ftp中的兩種工作方式

ftp是一種檔案傳輸協議,它支援兩種模式,一種方式叫做standard (也就是 active,主動方式),一種是 passive (也就是pasv,被動

方式)。 standard模式 ftp的客戶端傳送 port 命令到ftp server。passive模式ftp的客戶端傳送 pasv命令到 ftp server。

下面介紹乙個這兩種方式的工作原理:

standard模式ftp 客戶端首先和ftp server的tcp 21埠建立連線,通過這個通道傳送命令,客戶端需要接收資料的時候在這個通

道上傳送port命令。 port命令包含了客戶端用什麼埠接收資料。在傳送資料的時候,伺服器端通過自己的tcp 20埠傳送資料。

ftp server必須和客戶端建立乙個新的連線用來傳送資料。

passive模式在建立控制通道的時候和standard模式類似,當客戶端通過這個通道傳送pasv 命令的時候,ftp server開啟乙個位於

1024和5000之間的隨機埠並且通知客戶端在這個埠上傳送資料的請求,然後ftp server 將通過這個埠進行資料的傳送,這個

時候ftp server不再需要建立乙個新的和客戶端之間的連線。

現在的ftp軟體裡面包括在ie5以上的版本裡面也已經支援這兩種模式了。一般一些ftp客戶端的軟體就比較好設定了,一般都有乙個

pasv的選項,比如cuteftp,傳輸的方式都有standard和pasv的選項,可以自己進行選擇;另外在ie裡面如果要設定成pasv模式的話

可以選中工具-internet選項-高階-為ftp站點啟用資料夾檢視,否則就採用standard模式。

很多防火牆在設定的時候都是不允許接受外部發起的連線的,所以ftp的standard模式在許多時候在內部網路的機器通過防火牆出去

的時候受到了限制,因為從伺服器的tcp 20無法和內部網路的客戶端建立乙個新的連線,造成無法工作。當然也可以設定成功,首

先要建立一條規則就是允許內部的ip連線外部的ip的21埠;第二條就是禁止外部ip的tcp 20埠連線內部ip的<1024的埠,這條

是為了防止外部連線內部的常規埠;第三條驗證ack是否等於1,這個的原理就參見tcp建立連線的三次握手吧。所以如果安全的配

置的話非常困難,這個時候就想起來了pasv模式,因為不用建立新的連線,所以也就不會涉及到後面的問題了。但是管理員可能不

想使用pasv模式,因為這個時候ftp server會開放乙個隨機的高階口,儘管在iis4和iis5裡面埠的範圍是1024-5000,但是許多

ftp server的埠範圍達到了1024-65535,這個時候在這個主動開放的隨機埠上是有完全的訪問許可權的,如果iis也要設定成開

放的埠為1024-65535,具體方法如下:

1. regedt32

2. 找到hkey_local_machine\system\currentcontrolset\services\tcpip\parameters

3. 編輯-新增-數值

value name: maxuserport data type: reg_dword value: 65534

所以如果遇到了有防火牆的話或者怕配置麻煩的話還是採用pasv模式比較好些,但是如果真的對安全的需求很高的話建議採用standard模式。

選項卡 審核成功後函式 提交審核後 儲存後

需求 審核頁面提交後,重新整理列表頁面 解決思路 審核頁面 呼叫 列表頁面 的重新整理函式 審核成功提示也寫在重新整理函式上 審核成功後函式 var iframe window.parent.iframe data id beforehand wholedepartment toreviewtarg...

WordPress頁面鏈結新增 html字尾方法

預設wordpress頁面不能實現偽靜態鏈結,比如 http com begin.html,手動在鏈結中新增 html 會自動轉碼為 html 但萬能的wordpress,你能想到的功能都會有相應的外掛程式幫你實現。之前的一篇 為wordpress分類 頁面和標籤頁固定鏈結新增.html字尾,通過外...

ACM校賽 成功舉辦後總結

今天剛剛結束了acm校賽,我作為這次比賽的第一組織者,想寫點什麼留下,一方面給下次舉辦比賽留下一些經驗,另一方面也是給自己留下一些回憶,若干年後,當回憶起在大學時代幹過什麼有意義的事情,這算是一件了吧。這是我第一次辦acm比賽也是學校第一次辦acm比賽,各種摸索,許多任務作都不知道如何開展,最後比賽...