ftp伺服器net
Ⅰ 一個做好的網站(用的是asp.net)怎麼發布到ftp伺服器上
主機廠家會提供給你ftp的ip和用戶名,密碼,你先網站發布一下,就是菜單里的那個發布,然後到你發布的那個目錄,把文件傳上去就可以了。要把bin目錄和*.aspx web.config文件都傳上去。
域名的設置,你先注冊個域名,到當地的域名服務商哪兒,你要會自己設置,就自己設置,如果不會,就跟他們說,把我的域名指到你主機商給你的那個ip上就行了。
Ⅱ Internet信息服務—>>ftp伺服器
從新安裝IIS。
Ⅲ 怎樣製作Ftp伺服器
我就是看著這個拷貝過來的東西學習FTP伺服器的
你得認真仔細看認真學 要做FPT不是很難的事情 但是也不是很簡單的事情
FTP伺服器的架設
在我們的實際網路生活中,特別是寬頻網接入之後,FTP伺服器作為文件的傳輸和共享工具得到廣泛應用。FTP伺服器在文件的傳輸上性能穩定,
佔用系統資源小,而且傳輸速度快,現在網上已經有很多的FTP伺服器可供使用,而自己架設一個FTP伺服器也很容易,下面介紹兩種主流的FTP架構方式。
1.利用微軟公司的IIS
微軟的IIS功能非常強大,它除了提供WWW服務之外,還提供FTP的服務,利用它一樣很容易就能架設一個功能卓越的FTP伺服器。
IIS的安裝前面已經講解過,下面我們一起來看看通過設置IIS來架設FTP伺服器的幾個步驟。
第一步:啟動IIS,並啟動IIS上的FTP服務。在默認的情況下,此時你的FTP伺服器已經搭建好,並且可以立即登錄,但是該FTP中沒有任何文件。
第二步:滑鼠右擊IIS中的「默認FTP站點」項,選擇「屬性」菜單,即可出現如圖19的對話框。
第三步:選擇「主目錄」的標簽,在FTP站點目錄的「本地路徑」處填上你要設置的共享文件路徑。默認情況下,此處的文件夾位置為「C:\Inetpub\Ftproot」,
你如果臨時想改變共享目錄,隨時都可在此處修改(如圖20),以後別人登錄你的FTP伺服器時顯示的文件列表就是在這個目錄中。
第三步:在「主目錄」的標簽處,你還可設置FTP伺服器的文件訪問許可權,分別有讀取、寫入和日誌訪問,安全起見,這里的寫入許可權一般不選,
保證匿名用戶不能隨意對你文件進行操作。
第四步:設置登錄的用戶。如果你願意提供「匿名」的訪問許可權,還需在「安全標簽」處選擇上「允許匿名連接」(如圖21)。此外,
你還可從Windows系統帳號中選擇FTP伺服器的特殊帳號,當然也可以自己任意設置用戶名和密碼。
第五步:在「消息」標簽處,有「歡迎」、「退出」和「最大連接數」3個輸入框,分別代表別人在登錄、退出時FTP伺服器上給出的提示信息,
你可根據自己的需要設置。此外,最大連接數是設置同時連接本地FTP的最大主機台數(如圖22)。
第六步:在「FTP站點」的標簽處設置FTP標識,包括說明、IP地址和埠,這里一般不需要改動,按照默認選擇即可(如圖23)。
此外,在「C:\Winnt\System32\Logfiles」目錄中你還可以看到連接上你FTP的IP、時間等日誌信息。
此時,利用IE或者任何一款FTP的客戶端軟體即可登錄你架設好的FTP站點。
2.利用Serv-U
在FTP伺服器的搭建中,Serv-U是目前使用比較多的工具之一。它設置簡單,功能強大,而且非常穩定,總體上來說上它比IIS附帶的FTP伺服器略勝一籌。
它適用於所有的Windows版本,是一款共享軟體,可以讓用戶免費使用一個月。
第一步:Serv-U的下載和安裝。
目前Serv-U的最高版本為4.0,文件大小為2.9MB,它的下載站點之一為「http://www.download.com.cn/show.phtml?action=detail&id=484」。
點擊下載的可執行文件即可開始安裝了,安裝過程很簡單,所有設置保持默認值就可以,按「Next」完成每一步(如圖24)。
安裝完畢,在Windows的桌面上就出現Serv-U的圖標,雙擊Serv-U圖標,出現Serv-U主窗口,點擊主界面右邊窗口的「Start server」即可啟動FTP伺服器 。
第二步:Serv-U的配置。
在Serv-U的安裝完成之後即可出現配置向導,可以通過這個向導來對它進行配置,主要步驟如下。
A.安裝程序首先啟動一個設置向導幫助你設置FTP伺服器,點擊「Next」繼續。
B.系統彈出輸入IP的對話框,此項需要填入你准備為此FTP伺服器綁定的IP地址。除非你的計算機有多個固定的IP地址,
並且你只想其中一個被FTP伺服器所使用,否則,建議不管你是否有固定的IP地址,都將此項保留為空(即讓系統自動偵測),點擊「Next」(如圖25)。
C.輸入Domain name(域名)。此處填入你FTP伺服器的域名。但域名由DNS解析而不是由這里決定,因此實際上你可以填入任意內容,
比如像「我的個人FTP伺服器」這種對此FTP進行說明的文字。
D.輸入FTP訪問的埠號,一般保持默認的21即可。
E.匿名用戶的創建和訪問目錄的設定。首先向導會提示你是否要創建匿名帳號,這里選擇是,如果選擇不,則用戶需要用戶名和密碼才能訪問FTP伺服器。
接下來安裝向導提示輸入匿名用戶的主目錄(Anonymous home directory),此處按照需要來設定匿名用戶訪問硬碟的位置。
F.選擇匿名用戶是否將其限制在主目錄里,如果選擇是,則用戶只能訪問其主目錄及以下的目錄樹;如果選擇否,
則可以訪問其主目錄的同級或更高級的目錄樹。從安全形度考慮,一般建議選是。
G.創建新用戶和訪問目錄。按照向導的提示一步一步創建新用戶並輸入密碼(如圖26),接著指定該用戶可訪問的目錄和用戶許可權即可。
到這里,你的個人FTP就已經搭建完成了。不過這還只能實現Serv-U賦予的默認功能和許可權,要真正讓這個伺服器能被你自己隨心所欲地控制和管理,
則還需要經過以下後續的操作,這主要包括如下幾點。
A.對FTP用戶的管理
欲增加一個新用戶(包括增加Anonymous用戶),則在Serv-U的一個域中選中Users(用戶),然後單擊右鍵,進入New User(新用戶),
依次根據提示為它設置好User Name(用戶名)、Password(密碼)、Home directory(主目錄)等即可完成(如圖27)。
欲刪除一個用戶,則在此用戶上單擊右鍵,選Delete User(刪除用戶)即可。
B.對目錄許可權的管理
在Serv-U左邊框架中選中用戶名,再在右邊框架中進入Dir Access(目錄存取)窗口,然後在列表中選中相應目錄後,
就可在窗口的右側更改當前用戶對它的訪問許可權了(如圖28)。
文件的屬性主要包括:
Read(讀):對文件進行讀操作(復制、下載,不含查看)的權力。
Write(寫):對文件進行寫操作(上傳)的權力。
Append(附加):對文件進行寫操作和附加操作的權力。
Delete(刪除):對文件進行刪除(上傳、更名、刪除、移動)操作的權力。
Execute(執行):直接運行可執行文件的權力。
List(列表):對文件和目錄的查看權力。
Create(建立):建立目錄的權力。
Remove(移動):對目錄進行移動、刪除和更名的權力。
Inherit(繼承):如勾選中此項,則以上設置的屬性將對當前Path(目錄)及其下的整個目錄樹起作用;否則就只對其當前目錄有效。
C.其他設置
在Local server下的Setting處還可設置伺服器的一些通用信息。
在「max no.of users」處,設定同時登錄該伺服器的最大用戶數。
在Max.Speed處根據自己電腦的配置,設置用戶最大下載速度。
選擇「Block users who connect more than XX times within YY seconds for ZZ minutes」復選框並設置相應的數值,
可以防止有些惡意用戶為達到攻擊目的在短時間內對該伺服器的頻繁登錄。
選擇「Delete partially uploaded files」復選框,可以自動刪除上傳失敗後留在伺服器上不完整文件。如果不要選中這項,
就能讓Serv-U支持斷點上傳功能(如圖29)。
3.架設FTP伺服器的其他方式。
A.WS_FTP Server。這是一套非常有特色的FTP Server程序。它有簡單而強大的圖形介面。設置起來比較容易,可以在Win9X/NT/2000/XP系統下使用,
是一個共享的英文軟體,文件大小為3.3MB,下載站點之一:http://www.skycn.com/soft/1296.html。
B.FileZilla Server。作為一個小巧、可*的FTP伺服器軟體,它配置簡單,功能比較強大,適合Windows系列中的所有版本,文件大小為637kB,
同時它是完全免費的軟體,它的漢化版下載站點之一:http://www.skycn.com/soft/8091.html。
C.TYPSoft FTP Server漢化版。由於該軟體經過漢化,因此使用起來很容易上手,是一個非常適合初學者的FTP伺服器端軟體,
它配置簡單,也能方便地管理用戶,軟體大小隻有480kB,是一款免費軟體,它的下載站點之一:http://www.skycn.com/soft/8335.html。
WWW伺服器和FTP的訪問途徑
WWW的訪問都可使用IE或其他瀏覽器來實現,例如我們經常看到的Natscape和Opera等。由於它的訪問很容易,這里就不再詳細討論。
FTP的訪問一般有兩種方式,介紹如下:
A.直接利用IE登錄FTP。現在我們正在使用的IE也可作為登錄FTP的工具了,跟瀏覽網頁一樣,只需要將地址前面的HTTP改為FTP即可,例如訪問自己的FTP,
可以在瀏覽器中輸入ftp://localhost(如圖30),這時是匿名訪問方式,如果用IE登錄FTP時需用戶名和密碼,則可以右鍵調出登錄的菜單(如圖31),
在對話框中輸入用戶名和密碼即可。IE登錄FTP伺服器之後,FTP伺服器上的文件跟本機上的文件一樣,可以對其進行復制和粘貼等操作。
B.利用專用的軟體登錄FTP。此類軟體有很多,比較著名的有FlashFXP、CuteFTP、LeapFTP等。
個人覺得LeapFTP很不錯,操作簡單,佔用資源也很小,它的用法分步介紹如下。
第一步:LeapFTP的下載與安裝。
目前LeapFTP較新的版本為2.7.2,是一個共享軟體,LeapFTP v2.7.2.592的漢化版可以去http://www.skycn.com/soft/711.html下載。它的安裝非常簡單,
直接一路點擊「下一步」即可完成,安裝完成只有幾個配置文件和它自身一個獨立的程序,基本上是一個綠色軟體。
第二步:LeapFTP的使用。
A.打開LeapFTP,它的主界面如圖32。
B.添加FTP站點。點擊菜單上的「Sites」→「Site Manager」,(或直接按快捷鍵F4),彈出一個FTP站點的管理窗口。點擊「Add site」新建一個站點,
在右邊的對話框中逐一輸入該站點的基本信息,例如伺服器名稱(可以任意填寫,主要是為了管理的方便)、伺服器地址、埠和用戶名等(如圖33),
要登錄該FTP站,只需在左邊的窗口中雙擊該名稱即可。
C.取得FTP伺服器上的文件列表並按照需要上傳或下載。登錄上FTP之後,即可在LeapFTP的右上窗口中看到FTP上的文件列表,如果需要下載,
將選中的文件拖入左邊的本地硬碟中某個目錄里(如圖34)即可。同樣,也可以用這種方法將硬碟中的文件上傳到FTP伺服器中去。
域名的申請和動態IP的解決措施
為了便於記憶,我們可以申請WWW伺服器和FTP伺服器地址的域名。
網易提供免費域名的申請,大家可以去http://my.yeah.net/apply-new.htm上免費獲得(如圖35),
例如申請http://202.117.51.43對應的域名http://forus.yeah.net,這樣以後訪問自己的WWW服務就再也不需記住那些毫無意義的數字元號了。
在瀏覽器中直接輸入自己申請的域名即可。此外,雅克精彩(http://www.k666.com/k666/yu-ming/apply.php)和My001.net網(http://www.my001.net)
也都提供免費的WWW服務域名申請。
對FTP來說,域名的申請站點相對較少,這里推薦老牌的域名轉向免費服務提www.dhs.org。打開該網站之後,點擊Signup的連接,輸入注冊內容,
包括用戶ID、用戶姓名和用戶的E-mail地址,通過該網站給你發送的E-mail地址來激活注冊的帳號。然後即可按照該網站提供的密碼登錄了,
點擊「Login」,輸入帳號和密碼之後即可增加域名的轉向服務(如圖36)。注冊域名之後,以後如果想訪問自己的FTP只需輸入注冊的域名,
例如輸入ftp://forus.dhs.org代表本機上的FTP伺服器。
Ⅳ asp.net網站傳到FTP伺服器後出問題了,急啊,大俠過來幫幫忙
本地測試正常說明問題不在你這,找空間商核對下.net 的版本,確定伺服器這邊用的.NET版本是2.0 (2.0 默認同時兼容2.0版本 和3.5版本)而不是1.0 。要找穩定誠信好的空間提供商,否則網站上線後還有一大堆問題會讓你頭痛死的。
Ⅳ 如何設置FTP伺服器
FTP伺服器的架設
在我們的實際網路生活中,特別是寬頻網接入之後,FTP伺服器作為文件的傳輸和共享工具得到廣泛應用。FTP伺服器在文件的傳輸上性能穩定,佔用系統資源小,而且傳輸速度快,現在網上已經有很多的FTP伺服器可供使用,而自己架設一個FTP伺服器也很容易,下面介紹兩種主流的FTP架構方式。
1.利用微軟公司的IIS
微軟的IIS功能非常強大,它除了提供WWW服務之外,還提供FTP的服務,利用它一樣很容易就能架設一個功能卓越的FTP伺服器。
IIS的安裝前面已經講解過,下面我們一起來看看通過設置IIS來架設FTP伺服器的幾個步驟。
第一步:啟動IIS,並啟動IIS上的FTP服務。在默認的情況下,此時你的FTP伺服器已經搭建好,並且可以立即登錄,但是該FTP中沒有任何文件。
第二步:滑鼠右擊IIS中的「默認FTP站點」項,選擇「屬性」菜單,即可出現如圖19的對話框。
第三步:選擇「主目錄」的標簽,在FTP站點目錄的「本地路徑」處填上你要設置的共享文件路徑。默認情況下,此處的文件夾位置為「C:\Inetpub\Ftproot」,你如果臨時想改變共享目錄,隨時都可在此處修改(如圖20),以後別人登錄你的FTP伺服器時顯示的文件列表就是在這個目錄中。
第三步:在「主目錄」的標簽處,你還可設置FTP伺服器的文件訪問許可權,分別有讀取、寫入和日誌訪問,安全起見,這里的寫入許可權一般不選,保證匿名用戶不能隨意對你文件進行操作。
第四步:設置登錄的用戶。如果你願意提供「匿名」的訪問許可權,還需在「安全標簽」處選擇上「允許匿名連接」(如圖21)。此外,你還可從Windows系統帳號中選擇FTP伺服器的特殊帳號,當然也可以自己任意設置用戶名和密碼。
第五步:在「消息」標簽處,有「歡迎」、「退出」和「最大連接數」3個輸入框,分別代表別人在登錄、退出時FTP伺服器上給出的提示信息,你可根據自己的需要設置。此外,最大連接數是設置同時連接本地FTP的最大主機台數(如圖22)。
第六步:在「FTP站點」的標簽處設置FTP標識,包括說明、IP地址和埠,這里一般不需要改動,按照默認選擇即可(如圖23)。此外,在「C:\Winnt\System32\Logfiles」目錄中你還可以看到連接上你FTP的IP、時間等日誌信息。
此時,利用IE或者任何一款FTP的客戶端軟體即可登錄你架設好的FTP站點。
2.利用Serv-U
在FTP伺服器的搭建中,Serv-U是目前使用比較多的工具之一。它設置簡單,功能強大,而且非常穩定,總體上來說上它比IIS附帶的FTP伺服器略勝一籌。它適用於所有的Windows版本,是一款共享軟體,可以讓用戶免費使用一個月。
第一步:Serv-U的下載和安裝。
目前Serv-U的最高版本為4.0,文件大小為2.9MB,它的下載站點之一為「http://www.download.com.cn/show.phtml?action=detail&id=484」。
點擊下載的可執行文件即可開始安裝了,安裝過程很簡單,所有設置保持默認值就可以,按「Next」完成每一步(如圖24)。安裝完畢,在Windows的桌面上就出現Serv-U的圖標,雙擊Serv-U圖標,出現Serv-U主窗口,點擊主界面右邊窗口的「Start server」即可啟動FTP伺服器 。
第二步:Serv-U的配置。
在Serv-U的安裝完成之後即可出現配置向導,可以通過這個向導來對它進行配置,主要步驟如下。
A.安裝程序首先啟動一個設置向導幫助你設置FTP伺服器,點擊「Next」繼續。
B.系統彈出輸入IP的對話框,此項需要填入你准備為此FTP伺服器綁定的IP地址。除非你的計算機有多個固定的IP地址,並且你只想其中一個被FTP伺服器所使用,否則,建議不管你是否有固定的IP地址,都將此項保留為空(即讓系統自動偵測),點擊「Next」(如圖25)。
C.輸入Domain name(域名)。此處填入你FTP伺服器的域名。但域名由DNS解析而不是由這里決定,因此實際上你可以填入任意內容,比如像「我的個人FTP伺服器」這種對此FTP進行說明的文字。
D.輸入FTP訪問的埠號,一般保持默認的21即可。
E.匿名用戶的創建和訪問目錄的設定。首先向導會提示你是否要創建匿名帳號,這里選擇是,如果選擇不,則用戶需要用戶名和密碼才能訪問FTP伺服器。接下來安裝向導提示輸入匿名用戶的主目錄(Anonymous home directory),此處按照需要來設定匿名用戶訪問硬碟的位置。
F.選擇匿名用戶是否將其限制在主目錄里,如果選擇是,則用戶只能訪問其主目錄及以下的目錄樹;如果選擇否,則可以訪問其主目錄的同級或更高級的目錄樹。從安全形度考慮,一般建議選是。
G.創建新用戶和訪問目錄。按照向導的提示一步一步創建新用戶並輸入密碼(如圖26),接著指定該用戶可訪問的目錄和用戶許可權即可。
到這里,你的個人FTP就已經搭建完成了。不過這還只能實現Serv-U賦予的默認功能和許可權,要真正讓這個伺服器能被你自己隨心所欲地控制和管理,則還需要經過以下後續的操作,這主要包括如下幾點。
A.對FTP用戶的管理
欲增加一個新用戶(包括增加Anonymous用戶),則在Serv-U的一個域中選中Users(用戶),然後單擊右鍵,進入New User(新用戶),依次根據提示為它設置好User Name(用戶名)、Password(密碼)、Home directory(主目錄)等即可完成(如圖27)。
欲刪除一個用戶,則在此用戶上單擊右鍵,選Delete User(刪除用戶)即可。
B.對目錄許可權的管理
在Serv-U左邊框架中選中用戶名,再在右邊框架中進入Dir Access(目錄存取)窗口,然後在列表中選中相應目錄後,就可在窗口的右側更改當前用戶對它的訪問許可權了(如圖28)。
文件的屬性主要包括:
Read(讀):對文件進行讀操作(復制、下載,不含查看)的權力。
Write(寫):對文件進行寫操作(上傳)的權力。
Append(附加):對文件進行寫操作和附加操作的權力。
Delete(刪除):對文件進行刪除(上傳、更名、刪除、移動)操作的權力。
Execute(執行):直接運行可執行文件的權力。
List(列表):對文件和目錄的查看權力。
Create(建立):建立目錄的權力。
Remove(移動):對目錄進行移動、刪除和更名的權力。
Inherit(繼承):如勾選中此項,則以上設置的屬性將對當前Path(目錄)及其下的整個目錄樹起作用;否則就只對其當前目錄有效。
C.其他設置
在Local server下的Setting處還可設置伺服器的一些通用信息。
在「max no.of users」處,設定同時登錄該伺服器的最大用戶數。
在Max.Speed處根據自己電腦的配置,設置用戶最大下載速度。
選擇「Block users who connect more than XX times within YY seconds for ZZ minutes」復選框並設置相應的數值,可以防止有些惡意用戶為達到攻擊目的在短時間內對該伺服器的頻繁登錄。
選擇「Delete partially uploaded files」復選框,可以自動刪除上傳失敗後留在伺服器上不完整文件。如果不要選中這項,就能讓Serv-U支持斷點上傳功能(如圖29)。
3.架設FTP伺服器的其他方式。
A.WS_FTP Server。這是一套非常有特色的FTP Server程序。它有簡單而強大的圖形介面。設置起來比較容易,可以在Win9X/NT/2000/XP系統下使用,是一個共享的英文軟體,文件大小為3.3MB,下載站點之一:http://www.skycn.com/soft/1296.html。
B.FileZilla Server。作為一個小巧、可*的FTP伺服器軟體,它配置簡單,功能比較強大,適合Windows系列中的所有版本,文件大小為637kB,同時它是完全免費的軟體,它的漢化版下載站點之一:http://www.skycn.com/soft/8091.html。
C.TYPSoft FTP Server漢化版。由於該軟體經過漢化,因此使用起來很容易上手,是一個非常適合初學者的FTP伺服器端軟體,它配置簡單,也能方便地管理用戶,軟體大小隻有480kB,是一款免費軟體,它的下載站點之一:http://www.skycn.com/soft/8335.html。
WWW伺服器和FTP的訪問途徑
WWW的訪問都可使用IE或其他瀏覽器來實現,例如我們經常看到的Natscape和Opera等。由於它的訪問很容易,這里就不再詳細討論。
FTP的訪問一般有兩種方式,介紹如下:
A.直接利用IE登錄FTP。現在我們正在使用的IE也可作為登錄FTP的工具了,跟瀏覽網頁一樣,只需要將地址前面的HTTP改為FTP即可,例如訪問自己的FTP,可以在瀏覽器中輸入ftp://localhost(如圖30),這時是匿名訪問方式,如果用IE登錄FTP時需用戶名和密碼,則可以右鍵調出登錄的菜單(如圖31),在對話框中輸入用戶名和密碼即可。IE登錄FTP伺服器之後,FTP伺服器上的文件跟本機上的文件一樣,可以對其進行復制和粘貼等操作。
B.利用專用的軟體登錄FTP。此類軟體有很多,比較著名的有FlashFXP、CuteFTP、LeapFTP等。
個人覺得LeapFTP很不錯,操作簡單,佔用資源也很小,它的用法分步介紹如下。
第一步:LeapFTP的下載與安裝。
目前LeapFTP較新的版本為2.7.2,是一個共享軟體,LeapFTP v2.7.2.592的漢化版可以去http://www.skycn.com/soft/711.html下載。它的安裝非常簡單,直接一路點擊「下一步」即可完成,安裝完成只有幾個配置文件和它自身一個獨立的程序,基本上是一個綠色軟體。
第二步:LeapFTP的使用。
A.打開LeapFTP,它的主界面如圖32。
B.添加FTP站點。點擊菜單上的「Sites」→「Site Manager」,(或直接按快捷鍵F4),彈出一個FTP站點的管理窗口。點擊「Add site」新建一個站點,在右邊的對話框中逐一輸入該站點的基本信息,例如伺服器名稱(可以任意填寫,主要是為了管理的方便)、伺服器地址、埠和用戶名等(如圖33),要登錄該FTP站,只需在左邊的窗口中雙擊該名稱即可。
C.取得FTP伺服器上的文件列表並按照需要上傳或下載。登錄上FTP之後,即可在LeapFTP的右上窗口中看到FTP上的文件列表,如果需要下載,將選中的文件拖入左邊的本地硬碟中某個目錄里(如圖34)即可。同樣,也可以用這種方法將硬碟中的文件上傳到FTP伺服器中去。
FTP伺服器的架設
在我們的實際網路生活中,特別是寬頻網接入之後,FTP伺服器作為文件的傳輸和共享工具得到廣泛應用。FTP伺服器在文件的傳輸上性能穩定,佔用系統資源小,而且傳輸速度快,現在網上已經有很多的FTP伺服器可供使用,而自己架設一個FTP伺服器也很容易,下面介紹兩種主流的FTP架構方式。
1.利用微軟公司的IIS
微軟的IIS功能非常強大,它除了提供WWW服務之外,還提供FTP的服務,利用它一樣很容易就能架設一個功能卓越的FTP伺服器。
IIS的安裝前面已經講解過,下面我們一起來看看通過設置IIS來架設FTP伺服器的幾個步驟。
第一步:啟動IIS,並啟動IIS上的FTP服務。在默認的情況下,此時你的FTP伺服器已經搭建好,並且可以立即登錄,但是該FTP中沒有任何文件。
第二步:滑鼠右擊IIS中的「默認FTP站點」項,選擇「屬性」菜單,即可出現如圖19的對話框。
第三步:選擇「主目錄」的標簽,在FTP站點目錄的「本地路徑」處填上你要設置的共享文件路徑。默認情況下,此處的文件夾位置為「C:\Inetpub\Ftproot」,你如果臨時想改變共享目錄,隨時都可在此處修改(如圖20),以後別人登錄你的FTP伺服器時顯示的文件列表就是在這個目錄中。
第三步:在「主目錄」的標簽處,你還可設置FTP伺服器的文件訪問許可權,分別有讀取、寫入和日誌訪問,安全起見,這里的寫入許可權一般不選,保證匿名用戶不能隨意對你文件進行操作。
第四步:設置登錄的用戶。如果你願意提供「匿名」的訪問許可權,還需在「安全標簽」處選擇上「允許匿名連接」(如圖21)。此外,你還可從Windows系統帳號中選擇FTP伺服器的特殊帳號,當然也可以自己任意設置用戶名和密碼。
第五步:在「消息」標簽處,有「歡迎」、「退出」和「最大連接數」3個輸入框,分別代表別人在登錄、退出時FTP伺服器上給出的提示信息,你可根據自己的需要設置。此外,最大連接數是設置同時連接本地FTP的最大主機台數(如圖22)。
第六步:在「FTP站點」的標簽處設置FTP標識,包括說明、IP地址和埠,這里一般不需要改動,按照默認選擇即可(如圖23)。此外,在「C:\Winnt\System32\Logfiles」目錄中你還可以看到連接上你FTP的IP、時間等日誌信息。
此時,利用IE或者任何一款FTP的客戶端軟體即可登錄你架設好的FTP站點。
2.利用Serv-U
在FTP伺服器的搭建中,Serv-U是目前使用比較多的工具之一。它設置簡單,功能強大,而且非常穩定,總體上來說上它比IIS附帶的FTP伺服器略勝一籌。它適用於所有的Windows版本,是一款共享軟體,可以讓用戶免費使用一個月。
第一步:Serv-U的下載和安裝。
目前Serv-U的最高版本為4.0,文件大小為2.9MB,它的下載站點之一為「http://www.download.com.cn/show.phtml?action=detail&id=484」。
點擊下載的可執行文件即可開始安裝了,安裝過程很簡單,所有設置保持默認值就可以,按「Next」完成每一步(如圖24)。安裝完畢,在Windows的桌面上就出現Serv-U的圖標,雙擊Serv-U圖標,出現Serv-U主窗口,點擊主界面右邊窗口的「Start server」即可啟動FTP伺服器 。
第二步:Serv-U的配置。
在Serv-U的安裝完成之後即可出現配置向導,可以通過這個向導來對它進行配置,主要步驟如下。
A.安裝程序首先啟動一個設置向導幫助你設置FTP伺服器,點擊「Next」繼續。
B.系統彈出輸入IP的對話框,此項需要填入你准備為此FTP伺服器綁定的IP地址。除非你的計算機有多個固定的IP地址,並且你只想其中一個被FTP伺服器所使用,否則,建議不管你是否有固定的IP地址,都將此項保留為空(即讓系統自動偵測),點擊「Next」(如圖25)。
C.輸入Domain name(域名)。此處填入你FTP伺服器的域名。但域名由DNS解析而不是由這里決定,因此實際上你可以填入任意內容,比如像「我的個人FTP伺服器」這種對此FTP進行說明的文字。
D.輸入FTP訪問的埠號,一般保持默認的21即可。
E.匿名用戶的創建和訪問目錄的設定。首先向導會提示你是否要創建匿名帳號,這里選擇是,如果選擇不,則用戶需要用戶名和密碼才能訪問FTP伺服器。接下來安裝向導提示輸入匿名用戶的主目錄(Anonymous home directory),此處按照需要來設定匿名用戶訪問硬碟的位置。
F.選擇匿名用戶是否將其限制在主目錄里,如果選擇是,則用戶只能訪問其主目錄及以下的目錄樹;如果選擇否,則可以訪問其主目錄的同級或更高級的目錄樹。從安全形度考慮,一般建議選是。
G.創建新用戶和訪問目錄。按照向導的提示一步一步創建新用戶並輸入密碼(如圖26),接著指定該用戶可訪問的目錄和用戶許可權即可。
到這里,你的個人FTP就已經搭建完成了。不過這還只能實現Serv-U賦予的默認功能和許可權,要真正讓這個伺服器能被你自己隨心所欲地控制和管理,則還需要經過以下後續的操作,這主要包括如下幾點。
A.對FTP用戶的管理
欲增加一個新用戶(包括增加Anonymous用戶),則在Serv-U的一個域中選中Users(用戶),然後單擊右鍵,進入New User(新用戶),依次根據提示為它設置好User Name(用戶名)、Password(密碼)、Home directory(主目錄)等即可完成(如圖27)。
欲刪除一個用戶,則在此用戶上單擊右鍵,選Delete User(刪除用戶)即可。
B.對目錄許可權的管理
在Serv-U左邊框架中選中用戶名,再在右邊框架中進入Dir Access(目錄存取)窗口,然後在列表中選中相應目錄後,就可在窗口的右側更改當前用戶對它的訪問許可權了(如圖28)。
文件的屬性主要包括:
Read(讀):對文件進行讀操作(復制、下載,不含查看)的權力。
Write(寫):對文件進行寫操作(上傳)的權力。
Append(附加):對文件進行寫操作和附加操作的權力。
Delete(刪除):對文件進行刪除(上傳、更名、刪除、移動)操作的權力。
Execute(執行):直接運行可執行文件的權力。
List(列表):對文件和目錄的查看權力。
Create(建立):建立目錄的權力。
Remove(移動):對目錄進行移動、刪除和更名的權力。
Inherit(繼承):如勾選中此項,則以上設置的屬性將對當前Path(目錄)及其下的整個目錄樹起作用;否則就只對其當前目錄有效。
C.其他設置
在Local server下的Setting處還可設置伺服器的一些通用信息。
在「max no.of users」處,設定同時登錄該伺服器的最大用戶數。
在Max.Speed處根據自己電腦的配置,設置用戶最大下載速度。
選擇「Block users who connect more than XX times within YY seconds for ZZ minutes」復選框並設置相應的數值,可以防止有些惡意用戶為達到攻擊目的在短時間內對該伺服器的頻繁登錄。
選擇「Delete partially uploaded files」復選框,可以自動刪除上傳失敗後留在伺服器上不完整文件。如果不要選中這項,就能讓Serv-U支持斷點上傳功能(如圖29)。
3.架設FTP伺服器的其他方式。
A.WS_FTP Server。這是一套非常有特色的FTP Server程序。它有簡單而強大的圖形介面。設置起來比較容易,可以在Win9X/NT/2000/XP系統下使用,是一個共享的英文軟體,文件大小為3.3MB,下載站點之一:http://www.skycn.com/soft/1296.html。
B.FileZilla Server。作為一個小巧、可*的FTP伺服器軟體,它配置簡單,功能比較強大,適合Windows系列中的所有版本,文件大小為637kB,同時它是完全免費的軟體,它的漢化版下載站點之一:http://www.skycn.com/soft/8091.html。
C.TYPSoft FTP Server漢化版。由於該軟體經過漢化,因此使用起來很容易上手,是一個非常適合初學者的FTP伺服器端軟體,它配置簡單,也能方便地管理用戶,軟體大小隻有480kB,是一款免費軟體,它的下載站點之一:http://www.skycn.com/soft/8335.html。
WWW伺服器和FTP的訪問途徑
WWW的訪問都可使用IE或其他瀏覽器來實現,例如我們經常看到的Natscape和Opera等。由於它的訪問很容易,這里就不再詳細討論。
FTP的訪問一般有兩種方式,介紹如下:
A.直接利用IE登錄FTP。現在我們正在使用的IE也可作為登錄FTP的工具了,跟瀏覽網頁一樣,只需要將地址前面的HTTP改為FTP即可,例如訪問自己的FTP,可以在瀏覽器中輸入ftp://localhost(如圖30),這時是匿名訪問方式,如果用IE登錄FTP時需用戶名和密碼,則可以右鍵調出登錄的菜單(如圖31),在對話框中輸入用戶名和密碼即可。IE登錄FTP伺服器之後,FTP伺服器上的文件跟本機上的文件一樣,可以對其進行復制和粘貼等操作。
B.利用專用的軟體登錄FTP。此類軟體有很多,比較著名的有FlashFXP、CuteFTP、LeapFTP等。
個人覺得LeapFTP很不錯,操作簡單,佔用資源也很小,它的用法分步介紹如下。
第一步:LeapFTP的下載與安裝。
目前LeapFTP較新的版本為2.7.2,是一個共享軟體,LeapFTP v2.7.2.592的漢化版可以去http://www.skycn.com/soft/711.html下載。它的安裝非常簡單,直接一路點擊「下一步」即可完成,安裝完成只有幾個配置文件和它自身一個獨立的程序,基本上是一個綠色軟體。
第二步:LeapFTP的使用。
A.打開LeapFTP,它的主界面如圖32。
B.添加FTP站點。點擊菜單上的「Sites」→「Site Manager」,(或直接按快捷鍵F4),彈出一個FTP站點的管理窗口。點擊「Add site」新建一個站點,在右邊的對話框中逐一輸入該站點的基本信息,例如伺服器名稱(可以任意填寫,主要是為了管理的方便)、伺服器地址、埠和用戶名等(如圖33),要登錄該FTP站,只需在左邊的窗口中雙擊該名稱即可。
C.取得FTP伺服器上的文件列表並按照需要上傳或下載。登錄上FTP之後,即可在LeapFTP的右上窗口中看到FTP上的文件列表,如果需要下載,將選中的文件拖入左邊的本地硬碟中某個目錄里(如圖34)即可。同樣,也可以用這種方法將硬碟中的文件上傳到FTP伺服器中去。
域名的申請和動態IP的解決措施
為了便於記憶,我們可以申請WWW伺服器和FTP伺服器地址的域名。
網易提供免費域名的申請,大家可以去http://my.yeah.net/apply-new.htm上免費獲得(如圖35),例如申請http://202.117.51.43對應的域名http://forus.yeah.net,這樣以後訪問自己的WWW服務就再也不需記住那些毫無意義的數字元號了。在瀏覽器中直接輸入自己申請的域名即可。此外,雅克精彩(http://www.k666.com/k666/yu-ming/apply.php)和My001.net網(http://www.my001.net)也都提供免費的WWW服務域名申請。
對FTP來說,域名的申請站點相對較少,這里推薦老牌的域名轉向免費服
Ⅵ ftp伺服器有哪些種類
(1)
www伺服器(www
server)
www伺服器也稱為web伺服器(web
server)或http伺服器(http
server),它是internet上最常見也是使用最頻繁的
伺服器之一,www伺服器能夠為用戶提供網頁瀏覽、論壇訪問等等服務。比如:我們在使用瀏覽器訪問
http://www.discuz.net
的時候,實際上就是在訪問discuz!的www伺服器,從該www伺服器獲取需要的論壇資料和網頁。
(2)
ftp伺服器(ftp
server)
ftp伺服器是專門為用戶提供各種文件(file)的伺服器,ftp伺服器上往往存儲大量的文件,例如:軟體、mp3、電影、
程序等等。用戶只要使用ftp客戶端軟體登錄到ftp伺服器上就可以從ftp伺服器下載所需文件和資源到自己的電腦上,同時,
你也可以把自己電話上的文件上傳到ftp上供其他用戶下載,以實現文件資源的共享。
(3)
郵件伺服器(mail
server)
e-mail是internet上應用最頻繁的服務之一,而internet上每天數億百億計的電子郵件的收發都是通過郵件伺服器實
現的。郵件伺服器就像郵局一樣,可以為用戶提供電子郵件的接收存儲和發送服務。
除了以上介紹的3種主要伺服器之外,還有很多其他類型的網路伺服器,例如:資料庫伺服器(database
server)、代
理伺服器(proxy
server)、域名伺服器(domain
name
server)等等
Ⅶ 登錄ftp時出現錯誤118(net::ERR_CONNECTION_TIMED_OUT):未知錯誤。
連接超時。不是你的網路慢,就是FTP伺服器那邊出了問題。
這個一般沒什麼解決方法的。換個FTP登錄工具試試?如FlashFXP。
如果是你網速的問題,就去網速好一點的地方登錄FTP伺服器吧。比如網吧
如果是FTP伺服器的問題,就要叫伺服器那邊的工作人員去檢查一下了。
Ⅷ ASP.net 實現打開伺服器FTP文件夾
給你一個訪問ftp類。傳入用戶密碼等,直接調用裡面方法就可以了。能實現文件下載等
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.IO;
namespace JySoft.SaleFrame.Facade
{
/// <summary>
/// FTP 的摘要說明。
/// </summary>
public class FTPServer
{
private string strRemoteHost;
private int strRemotePort;
private string strRemotePath;
private string strRemoteUser;
private string strRemotePass;
private Boolean bConnected;
#region 內部變數
/// <summary>
/// 伺服器返回的應答信息(包含應答碼)
/// </summary>
private string strMsg;
/// <summary>
/// 伺服器返回的應答信息(包含應答碼)
/// </summary>
private string strReply;
/// <summary>
/// 伺服器返回的應答碼
/// </summary>
private int iReplyCode;
/// <summary>
/// 進行控制連接的socket
/// </summary>
private Socket socketControl;
/// <summary>
/// 傳輸模式
/// </summary>
private TransferType trType;
/// <summary>
/// 傳輸模式:二進制類型、ASCII類型
/// </summary>
public enum TransferType
{
/// <summary>
/// Binary
/// </summary>
Binary,
/// <summary>
/// ASCII
/// </summary>
ASCII
};
/// <summary>
/// 接收和發送數據的緩沖區
/// </summary>
private static int BLOCK_SIZE = 512;
Byte[] buffer = new Byte[ BLOCK_SIZE];
/// <summary>
/// 編碼方式
/// </summary>
Encoding ASCII = Encoding.Default;
#endregion
#region 內部函數
#region 構造函數
/// <summary>
/// 預設構造函數
/// </summary>
public FTPServer()
{
strRemoteHost = "";
strRemotePath = "";
strRemoteUser = "";
strRemotePass = "";
strRemotePort = 21;
bConnected = false;
}
/// <summary>
/// 構造函數
/// </summary>
/// <param name="remoteHost"></param>
/// <param name="remotePath"></param>
/// <param name="remoteUser"></param>
/// <param name="remotePass"></param>
/// <param name="remotePort"></param>
public FTPServer( string remoteHost, string remotePath, string remoteUser, string remotePass, int remotePort )
{
strRemoteHost = remoteHost;
strRemotePath = remotePath;
strRemoteUser = remoteUser;
strRemotePass = remotePass;
strRemotePort = remotePort;
Connect();
}
#endregion
#region 登陸
/// <summary>
/// FTP伺服器IP地址
/// </summary>
public string RemoteHost
{
get
{
return strRemoteHost;
}
set
{
strRemoteHost = value;
}
}
/// <summary>
/// FTP伺服器埠
/// </summary>
public int RemotePort
{
get
{
return strRemotePort;
}
set
{
strRemotePort = value;
}
}
/// <summary>
/// 當前伺服器目錄
/// </summary>
public string RemotePath
{
get
{
return strRemotePath;
}
set
{
strRemotePath = value;
}
}
/// <summary>
/// 登錄用戶賬號
/// </summary>
public string RemoteUser
{
set
{
strRemoteUser = value;
}
}
/// <summary>
/// 用戶登錄密碼
/// </summary>
public string RemotePass
{
set
{
strRemotePass = value;
}
}
/// <summary>
/// 是否登錄
/// </summary>
public bool Connected
{
get
{
return bConnected;
}
}
#endregion
#region 鏈接
/// <summary>
/// 建立連接
/// </summary>
public void Connect()
{
socketControl = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint ep = new IPEndPoint(IPAddress.Parse(RemoteHost), strRemotePort);
// 鏈接
try
{
socketControl.Connect(ep);
}
catch(Exception)
{
throw new IOException("連接不上FTP伺服器!");
}
// 獲取應答碼
ReadReply();
if(iReplyCode != 220)
{
DisConnect();
throw new IOException(strReply.Substring(4));
}
try
{
// 登陸
SendCommand("USER "+strRemoteUser);
if( !(iReplyCode == 331 || iReplyCode == 230) )
{
CloseSocketConnect();//關閉連接
throw new IOException(strReply.Substring(4));
}
if( iReplyCode != 230 )
{
SendCommand("PASS "+strRemotePass);
if( !(iReplyCode == 230 || iReplyCode == 202) )
{
CloseSocketConnect();//關閉連接
throw new IOException(strReply.Substring(4));
}
}
}
catch
{
throw new IOException("登錄用戶名密碼錯誤!");
}
bConnected = true;
// 切換到目錄
ChDir(strRemotePath);
}
/// <summary>
/// 關閉連接
/// </summary>
public void DisConnect()
{
if( socketControl != null )
{
SendCommand("QUIT");
}
CloseSocketConnect();
}
#endregion
#region 傳輸模式
/// <summary>
/// 設置傳輸模式
/// </summary>
/// <param name="ttType">傳輸模式</param>
public void SetTransferType(TransferType ttType)
{
if(ttType == TransferType.Binary)
{
SendCommand("TYPE I");//binary類型傳輸
}
else
{
SendCommand("TYPE A");//ASCII類型傳輸
}
if (iReplyCode != 200)
{
throw new IOException(strReply.Substring(4));
}
else
{
trType = ttType;
}
}
/// <summary>
/// 獲得傳輸模式
/// </summary>
/// <returns>傳輸模式</returns>
public TransferType GetTransferType()
{
return trType;
}
#endregion
#region 文件操作
/// <summary>
/// 獲得文件列表
/// </summary>
/// <param name="strMask">文件名的匹配字元串</param>
/// <returns></returns>
public string[] Dir(string strMask)
{
// 建立鏈接
if(!bConnected)
{
Connect();
}
//建立進行數據連接的socket
Socket socketData = CreateDataSocket();
//傳送命令
SendCommand("NLST " + strMask);
//分析應答代碼
if(!(iReplyCode == 150 || iReplyCode == 125 || iReplyCode == 226))
{
return null;
}
//獲得結果
strMsg = "";
while(true)
{
int iBytes = socketData.Receive(buffer, buffer.Length, 0);
strMsg += ASCII.GetString(buffer, 0, iBytes);
if(iBytes < buffer.Length)
{
break;
}
}
char[] seperator = {'\n'};
string[] strsFileList = strMsg.Split(seperator);
socketData.Close();//數據socket關閉時也會有返回碼
if(iReplyCode != 226)
{
ReadReply();
if(iReplyCode != 226)
{
throw new IOException(strReply.Substring(4));
}
}
return strsFileList;
}
/// <summary>
/// 獲取文件大小
/// </summary>
/// <param name="strFileName">文件名</param>
/// <returns>文件大小</returns>
private long GetFileSize(string strFileName)
{
if(!bConnected)
{
Connect();
}
SendCommand("SIZE " + Path.GetFileName(strFileName));
long lSize=0;
if(iReplyCode == 213)
{
lSize = Int64.Parse(strReply.Substring(4));
}
else
{
throw new IOException(strReply.Substring(4));
}
return lSize;
}
/// <summary>
/// 刪除
/// </summary>
/// <param name="strFileName">待刪除文件名</param>
public void Delete(string strFileName)
{
if(!bConnected)
{
Connect();
}
SendCommand("DELE "+strFileName);
if(iReplyCode != 250)
{
throw new IOException(strReply.Substring(4));
}
}
/// <summary>
/// 重命名(如果新文件名與已有文件重名,將覆蓋已有文件)
/// </summary>
/// <param name="strOldFileName">舊文件名</param>
/// <param name="strNewFileName">新文件名</param>
public void Rename(string strOldFileName,string strNewFileName)
{
if(!bConnected)
{
Connect();
}
SendCommand("RNFR "+strOldFileName);
if(iReplyCode != 350)
{
throw new IOException(strReply.Substring(4));
}
// 如果新文件名與原有文件重名,將覆蓋原有文件
SendCommand("RNTO "+strNewFileName);
if(iReplyCode != 250)
{
throw new IOException(strReply.Substring(4));
}
}
#endregion
#region 上傳和下載
/// <summary>
/// 下載一批文件
/// </summary>
/// <param name="strFileNameMask">文件名的匹配字元串</param>
/// <param name="strFolder">本地目錄(不得以\結束)</param>
public void Get(string strFileNameMask,string strFolder)
{
if(!bConnected)
{
Connect();
}
string[] strFiles = Dir(strFileNameMask);
foreach(string strFile in strFiles)
{
if(!strFile.Equals(""))//一般來說strFiles的最後一個元素可能是空字元串
{
Get(strFile,strFolder,strFile);
}
}
}
/// <summary>
/// 下載一個文件
/// </summary>
/// <param name="strRemoteFileName">要下載的文件名</param>
/// <param name="strFolder">本地目錄(不得以\結束)</param>
/// <param name="strLocalFileName">保存在本地時的文件名</param>
public void Get(string strRemoteFileName,string strFolder,string strLocalFileName)
{
if(!bConnected)
{
Connect();
}
SetTransferType(TransferType.Binary);
if (strLocalFileName.Equals(""))
{
strLocalFileName = strRemoteFileName;
}
if(!File.Exists(strLocalFileName))
{
Stream st = File.Create(strLocalFileName);
st.Close();
}
FileStream output = new
FileStream(strFolder + "\\" + strLocalFileName,FileMode.Create);
Socket socketData = CreateDataSocket();
SendCommand("RETR " + strRemoteFileName);
if(!(iReplyCode == 150 || iReplyCode == 125
|| iReplyCode == 226 || iReplyCode == 250))
{
throw new IOException(strReply.Substring(4));
}
while(true)
{
int iBytes = socketData.Receive(buffer, buffer.Length, 0);
output.Write(buffer,0,iBytes);
if(iBytes <= 0)
{
break;
}
}
output.Close();
if (socketData.Connected)
{
socketData.Close();
}
if(!(iReplyCode == 226 || iReplyCode == 250))
{
ReadReply();
if(!(iReplyCode == 226 || iReplyCode == 250))
{
throw new IOException(strReply.Substring(4));
}
}
}
/// <summary>
/// 上傳一批文件
/// </summary>
/// <param name="strFolder">本地目錄(不得以\結束)</param>
/// <param name="strFileNameMask">文件名匹配字元(可以包含*和?)</param>
public void Put(string strFolder,string strFileNameMask)
{
string[] strFiles = Directory.GetFiles(strFolder,strFileNameMask);
foreach(string strFile in strFiles)
{
//strFile是完整的文件名(包含路徑)
Put(strFile);
}
}
/// <summary>
/// 上傳一個文件
/// </summary>
/// <param name="strFileName">本地文件名</param>
public void Put(string strFileName)
{
if(!bConnected)
{
Connect();
}
Socket socketData = CreateDataSocket();
SendCommand("STOR "+Path.GetFileName(strFileName));
if( !(iReplyCode == 125 || iReplyCode == 150) )
{
throw new IOException(strReply.Substring(4));
}
FileStream input = new
FileStream(strFileName,FileMode.Open);
int iBytes = 0;
while ((iBytes = input.Read(buffer,0,buffer.Length)) > 0)
{
socketData.Send(buffer, iBytes, 0);
}
input.Close();
if (socketData.Connected)
{
socketData.Close();
}
if(!(iReplyCode == 226 || iReplyCode == 250))
{
ReadReply();
if(!(iReplyCode == 226 || iReplyCode == 250))
{
throw new IOException(strReply.Substring(4));
}
}
}
#endregion
#region 目錄操作
/// <summary>
/// 創建目錄
/// </summary>
/// <param name="strDirName">目錄名</param>
public void MkDir(string strDirName)
{
if(!bConnected)
{
Connect();
}
SendCommand("MKD "+strDirName);
if(iReplyCode != 257)
{
throw new IOException(strReply.Substring(4));
}
}
/// <summary>
/// 刪除目錄
/// </summary>
/// <param name="strDirName">目錄名</param>
public void RmDir(string strDirName)
{
if(!bConnected)
{
Connect();
}
SendCommand("RMD "+strDirName);
if(iReplyCode != 250)
{
throw new IOException(strReply.Substring(4));
}
}
/// <summary>
/// 改變目錄
/// </summary>
/// <param name="strDirName">新的工作目錄名</param>
public void ChDir(string strDirName)
{
if(strDirName.Equals(".") || strDirName.Equals(""))
{
return;
}
if(!bConnected)
{
Connect();
}
SendCommand("CWD "+strDirName);
if(iReplyCode != 250)
{
throw new IOException(strReply.Substring(4));
}
this.strRemotePath = strDirName;
}
#endregion
/// <summary>
/// 將一行應答字元串記錄在strReply和strMsg
/// 應答碼記錄在iReplyCode
/// </summary>
private void ReadReply()
{
strMsg = "";
strReply = ReadLine();
iReplyCode = Int32.Parse(strReply.Substring(0,3));
}
/// <summary>
/// 建立進行數據連接的socket
/// </summary>
/// <returns>數據連接socket</returns>
private Socket CreateDataSocket()
{
SendCommand("PASV");
if(iReplyCode != 227)
{
throw new IOException(strReply.Substring(4));
}
int index1 = strReply.IndexOf('(');
int index2 = strReply.IndexOf(')');
string ipData =
strReply.Substring(index1+1,index2-index1-1);
int[] parts = new int[6];
int len = ipData.Length;
int partCount = 0;
string buf="";
for (int i = 0; i < len && partCount <= 6; i++)
{
char ch = Char.Parse(ipData.Substring(i,1));
if (Char.IsDigit(ch))
buf+=ch;
else if (ch != ',')
{
throw new IOException("Malformed PASV strReply: " +
strReply);
}
if (ch == ',' || i+1 == len)
{
try
{
parts[partCount++] = Int32.Parse(buf);
buf="";
}
catch (Exception)
{
throw new IOException("Malformed PASV strReply: " +
strReply);
}
}
}
string ipAddress = parts[0] + "."+ parts[1]+ "." +
parts[2] + "." + parts[3];
int port = (parts[4] << 8) + parts[5];
Socket s = new
Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint ep = new
IPEndPoint(IPAddress.Parse(ipAddress), port);
try
{
s.Connect(ep);
}
catch(Exception)
{
throw new IOException("Can't connect to remote server");
}
return s;
}
/// <summary>
/// 關閉socket連接(用於登錄以前)
/// </summary>
private void CloseSocketConnect()
{
if(socketControl!=null)
{
socketControl.Close();
socketControl = null;
}
bConnected = false;
}
/// <summary>
/// 讀取Socket返回的所有字元串
/// </summary>
/// <returns>包含應答碼的字元串列</returns>
private string ReadLine()
{
while(true)
{
int iBytes = socketControl.Receive(buffer, buffer.Length, 0);
strMsg += ASCII.GetString(buffer, 0, iBytes);
if(iBytes < buffer.Length)
{
break;
}
}
char[] seperator = {'\n'};
string[] mess = strMsg.Split(seperator);
if(strMsg.Length > 2)
{
strMsg = mess[mess.Length-2];
//seperator[0]是10,換行符是由13和0組成的,分隔後10後面雖沒有字元串,
//但也會分配為空字元串給後面(也是最後一個)字元串數組,
//所以最後一個mess是沒用的空字元串
//但為什麼不直接取mess[0],因為只有最後一行字元串應答碼與信息之間有空格
}
else
{
strMsg = mess[0];
}
if(!strMsg.Substring(3,1).Equals(" "))//返回字元串正確的是以應答碼(如220開頭,後面接一空格,再接問候字元串)
{
return ReadLine();
}
return strMsg;
}
/// <summary>
/// 發送命令並獲取應答碼和最後一行應答字元串
/// </summary>
/// <param name="strCommand">命令</param>
private void SendCommand(string strCommand)
{
Byte[] cmdBytes = ASCII.GetBytes((strCommand + "\r\n").ToCharArray());
socketControl.Send(cmdBytes, cmdBytes.Length, 0);
ReadReply();
}
#endregion
}
}
Ⅸ 登錄ftp時出現 錯誤 118 (net::ERR_CONNECTION_TIMED_OUT): 未知錯誤。
要用比較新的版本的FTP。
不僅要把自己裝的防火牆調低或關掉還要尤其是xp系統帶的防火牆關掉。
FTP設置時,請勿選擇在PASV模式下上傳,否則將出現登錄FTP後,無法列表等異常情況。相同的軟體,版本不同,設置方法也略有不同,因此需要根據實際情況進行設置。
FlashFxp中文版:選項--參數選擇--代理/防火牆/標識--將「使用被動模式」前復選框中的勾去掉。
Cute FTP英文版:FTP—Settings—Options—Firewall,將「PASV mode」前復選框中的打勾去掉。
Cute FTP3.5中文版:FTP—設置—選項—防火牆,「PASV方式(A)」前復選框中的打勾去掉。
Leap FTP2.7.2:Sites—Site Manager—Advanced,將「Use PASV mode」前復選框中的打勾去掉。用戶在FTP的時候要選用PORT模式。
建議大家使用不同版本的FTP軟體登陸FTP伺服器。
建議升級病毒庫,並查殺病毒。
在"參數選擇"中高級選項一欄,在"列表方式"中選擇"顯示隱藏文件"。
在"參數選擇"中選擇代理一欄,在"使用被動模式"一欄前打鉤即可。
系統自身問題。
刪除那個站點,再重新創建一個新的站點。這個可能是軟體本身的問題,用久了有時就會出現這樣的問題。
Ⅹ c#.net ftp鏈接
using System.Net;
private void btnOpen_Click(object sender, EventArgs e)
{
Cursor currentCursor = this.Cursor;
FtpWebResponse response = null;
Stream stream = null;
try
{
this.Cursor = Cursors.WaitCursor;
// Create the FtpWebRequest object.
//第一步,生成FtpWebRequest對象
Uri baseUri = new Uri(txtServer.Text);//txtServer輸入形如ftp://server的字元串
FtpWebRequest request =(FtpWebRequest)WebRequest.Create(baseUri);
//第二步,設置訪問伺服器的用戶名和密碼
request.Credentials = new NetworkCredential(txtUsername.Text,
txtPassword.Text);//訪問Ftp伺服器的用戶名和密碼
//第三步,設置訪問伺服器的方法
request.Method = WebRequestMethods.Ftp.ListDirectory; //訪問ftp伺服器的方法,
// Send the request to the server.
//第四步,將request發送到伺服器
//將請求發送到ftp伺服器
response = (FtpWebResponse)request.GetResponse();
//第五步,獲取伺服器的response
// Read the response and fill the list box.
stream = response.GetResponseStream();
//第六步,對從伺服器獲取的stream進行處理
Encoding encode = System.Text.Encoding.GetEncoding("gb2312");
FillDirectoryList(stream,encode);
serverDirectory = null;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error FTP Client",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
//第七步,將使用的response,stream等對象關閉
finally
{
if (response != null)
response.Close();
if (stream != null)
stream.Close();
this.Cursor = currentCursor;
}
}
///對從伺服器獲取的stream進行處理
private void FillDirectoryList(Stream stream,Encoding encode)
{
StreamReader reader = new StreamReader(stream,encode);
string content = reader.ReadToEnd();
string[] files = content.Split('\n');
lstFiles.DataSource = files;
reader.Close();
}
//從ftp伺服器下載文件
private void btnGetFile_Click(object sender, EventArgs e)
{
FtpWebResponse response = null;
Stream inStream = null;
Stream outStream = null;
try
{
Uri baseUri = new Uri(txtServer.Text);
string filename = lstFiles.SelectedValue.ToString().Trim();
string fullFilename = serverDirectory + @"/" + filename;
Uri uri = new Uri(baseUri, fullFilename);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
request.Credentials = new NetworkCredential(txtUsername.Text,
txtPassword.Text);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.UseBinary = checkBoxBinary.Checked;
response = (FtpWebResponse)request.GetResponse();
inStream = response.GetResponseStream();
saveFileDialog.FileName = filename;
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
outStream = File.OpenWrite(saveFileDialog.FileName);
byte[] buffer = new byte[4096];
int size = 0;
while ((size = inStream.Read(buffer, 0, 4096)) > 0)
{
outStream.Write(buffer, 0, size);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error FTP Client",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
if (inStream != null)
inStream.Close();
if (outStream != null)
outStream.Close();
if (response != null)
response.Close();
}
}