cftp多線程
1. 各位高手,誰能告訴我建立ftp的詳細方法
建立個人FTP伺服器教程 以及 內網、區域網設置IP,建立FTP
【怎樣建立個人FTP】
Serv-U FTP Server 5.0.0.11 final 特別破解版漢化版
點擊下載
《FTP Serv-U 教程》+《FTP的建立和維護手冊》
點擊下載
在網上做過軟體下載的人都知道,建立一個FTP下載伺服器相對比較簡單,一般用WIN2000下自帶的IIS就可以,但IIS在功能上好多都不盡人如意,下面我就介紹一款功能非常強大,但使用簡單的FTP伺服器構建軟體-Serv-U FTP Server,讓我們也來體驗一下自己DIY FTP伺服器的快樂! 在說明使用之前,讓我先大致介紹一下Serv-U(本文中提到Serv-U版本為3.0.0.17), Serv-U 是一個可以運行於Windows 95/98/2000/ME 和 Windows NT 4.0下的FTP伺服器程序如圖所示,
有了它,你的個人電腦就可以模擬為一個FTP伺服器,也就是說,你所連接的網路中的計算機用戶可以訪問你的個人電腦,通過FTP協議(文件傳輸協議)復制、移動、刪除你的電腦中的文件或文件夾,可以做一切許可權所允許的事情。FTP協議規定了計算機之間的標准通訊方式,使所有不同類型,不同操作系統,不同格式的電腦之間得以互換文件。它可以用最簡單的方式創建用戶帳號,並且在硬碟空間上劃分一定的區域用以存放文件,讓用戶以各種FTP客戶端軟體(如CuteFTP、WS_FTP等)上傳或下載所需要的文件。
有許多FTP伺服器和客戶端軟體可用於不同的系統中,Serv-U是用於運行MS-Windows 並且已安裝了WinSock 版本 1.1 兼容 TCP/IP協議的個人電腦中的,這幾乎包括了所有的Windows操作系統。
Serv-U由兩大部分組成,引擎和用戶界面。Serv-U引擎(ServUDaemon.exe)其實是一個常駐後台的程序,也是Serv-U整個軟體的心臟部分,它負責處理來自各種FTP客戶端軟體的FTP命令,也是負責執行各種文件傳送的軟體。在運行Serv-U引擎也就ServUDaemon.exe
文件後,我們看不到任何的用戶界面,它只是在後台運行,通常我們無法影響它,但在ServUAdmin.exe中我們可以停止和開始它。Serv-U引擎可以在任何Windows平台下作為一個本地系統服務來運行,系統服務隨操作系統的啟動而開始運行,而後我們就可以運行用戶界面程序了。在Win NT/2000系統中,Serv-U會自動安裝為一個系統服務,但在Win 9x/Me中,你需要在「伺服器」面板中選擇「自動開始」,才能讓它轉為系統服務。Serv-U用戶界面(ServUAdmin.exe)也就是Serv-U管理員,它負責與Serv-U引擎之間的交互。它可以讓用戶配置 Serv-U,包括創建域、定義用戶、並告訴伺服器是否可以訪問。啟動Serv-U管理員最簡單的辦法就是直接點接系統欄的「U」形圖標,當然,你也可以從開始菜單中運行它。
在此有必要把Serv-U中的一些重要的概念給大家講清楚:每個正在運行的Serv-U引擎可以被用來運行多個「虛擬」的FTP伺服器,在管理員程序中,每個「虛擬」的FTP伺服器都稱為「域」,因此,對於伺服器來說,不得不建立多個域時是非常有用的。每個域都有各自
的「用戶」、「組」和設置。一般說來,「設置向導」會在你第一次運行應用程序時設置好一個最初的域和用戶帳號。伺服器、域和用戶之間的關系大家可以參考下表:
*Serv-U 伺服器
*域 1
*用戶帳號 1
*用戶帳號 2
*用戶帳號 3
*域 2
*用戶帳號 1
*用戶帳號 2
*域 3
*用戶帳號 1
*用戶帳號 1
這個表有點類似與Serv-U管理員中伺服器、域和用戶的排列。
Serv-U FTP Server 是試用軟體,安裝後三十天內,你可以作為「專業版本」使它,但試用期過後,你就只能作為免費的「個人版
本」使用了,只有基本功能了。
好了,說了這么多,還沒到關鍵部分-如何自己來建立FTP伺服器。下面我就一步一步來說明。
一、 安裝原版軟體和漢化補丁,這個過程就不多說了,想必沒人不會的。
二、 建立第一個本地FTP伺服器
安裝完成後程序會自動運行,你也可以在菜單中選擇運行。
1、 第一次運行程序,它會彈出設置向導窗口如圖,
將會帶你完成最初的設置,
2、 單擊「下一步」,出現「顯示菜單圖像」的窗口,問你是否在菜單中顯示小圖像,看各人喜歡了;
3、 單擊「下一步」,這個窗口是讓你在本地第一次運行FTP伺服器,只要「下一步」就行了。
4、 接下來要你輸入你的IP地址如圖,
如果你自己有伺服器,有固定的IP,那就請輸入IP地址,如果你只是在自己電腦上建立FTP,而且又是撥號用戶,有的只是動態IP,沒有固定IP,那這一步就省了,什麼也不要填,Serv-U 會自動確定你的IP地址,「下一步」;
5、 在這兒要你輸入你的域名,如圖
如果你有的話,如:ftp.abc.com,沒有的話,就隨便填一個;
6、 「下一步」,詢問你是否允許匿名訪問如圖
一般說來,匿名訪問是以Anonymous為用戶名稱登錄的,無需密碼,當然如果你想成立一個會員區什麼的,就應該選擇「否」,不讓隨便什麼人都可以登錄,只有許可用戶才行,在此我們填「是」;
7、 「下一步」,問你匿名用戶登錄到你的電腦時的目錄,如圖,
你可以自己指定一個硬碟上已存在的目錄,如F:\temp\xyz;
8、 「下一步」,詢問你是否要鎖定該目錄,鎖定後,匿名登錄的用戶將只能認為你所指定的目錄(F:\temp\xyz)是根目錄,也就是說他只能訪問這個目錄下的文件和文件夾,這個目錄之外就不能訪問,對於匿名用戶一般填「是」;
9、 「下一步」,詢問你是否創建命名的帳號,也就是說可以指定用戶以特定的帳號訪問你的FTP,這對於辦會員區可很有用哦,你可以對於每個人都創建一個帳號,每個帳號的許可權不同,就可以不同程序地限制每個人的權利,方法將在後面講到,這里選擇「是」;
10、 「下一步」,請你填入所要建立的帳號的名稱,如圖,如:ldr,
11、 「下一步」,請輸入密碼,如:123,
12、 「下一步」,詢問登錄目錄是什麼,這一步與第7步一樣,如:F:\temp
13、 「下一步」,詢問你是否要鎖定該目錄,同第8步,這里選擇「否」;
14、 接下來詢問你這次創建的用戶的管理員許可權,如圖,
有幾項選擇:無許可權,組管理員,域管理員,只讀管理員和系統管理員,每項的許可權各不相同;這里選擇「系統管理員」;
15、 最後一步,點擊「完成」就OK了,你有什麼需要修改的,可以點「上一步」,或者進入Serv-U管理員直接修改。至此,我們建立
了一個域ftp.abc.com,兩個用戶,一個Anonymous,一個ldr。
三、 既然我們已經建立好FTP伺服器,那麼我們就應該可以用FTP客戶端軟體來嘗試登錄。
怎麼辦呢?其實很簡單,我們不用上網,就可以測試。我們知道,不上網時,本地機的IP地址默認就為127.0.0.1,FTP埠號為21。打開FTP客戶端軟體,我就用FlashFXP來說明,打開快速連接,填入相應內容,如圖
然後連接,如圖
可以看到,我左邊窗格以Anonymous登錄,右邊窗格以ldr登錄,由於是本地機,所以速度奇快,上網後,假如我要讓你登錄到我的電腦上,我只要把我的上網時的IP地址給你,你就可以匿名訪問我的電腦了(注意不要開防火牆),是不是很方便?
四、Serv-U管理員中的各項設置
在設置完成後,將會進入Serv-U管理員的主界面,如圖
左邊窗格中顯示各個欄目,右邊窗格中顯示各個欄目的具體選項,下面就大概講一講設置內容。
1、 在圖中,我們可以人為地控制Serv-U引擎的運行或停止,記住,在Win 9x/Me 中,我們就要在此選擇「系統服務」,才會運行
Serv-U引擎。
2、 「許可」,如果你花美元買了注冊號,就可以在此輸入。
3、 「設置」,這個設置是對於「本地伺服器」來說的。「常規」設置中,如圖
可以限制伺服器的最大速度,可以攔截FXP(站點到站點傳送),也可以限制用戶的數量,這樣不至於你的伺服器被拖跨。「目錄緩存」設置中,如圖
允許你自己確定目錄列表的個數以及超時時間,在Windows 95 和 NT下,目錄列表默認設置為25,當緩存滿了之後,新的請求將替換老的請求。「高級」設置中,如圖
可以讓你自己定義伺服器、Socket、文件的上傳和下載的各項設置。
4、 「活動」,在這里記錄了用戶的活動日誌,已封鎖的IP的活動日誌,以及任務日誌;任務日誌中顯示的就是你開始停止的各項操作記錄,你可以點擊右擊,選擇一此過濾文本,使其只顯示你所想見的內容,如圖
5、 「域」,這里包含了你一開始根據向導所建立的用戶、設置、域等。「域--設置」中所設置的內容其實與第3步差不多,只是它更
加具體,可以對於每一個不同域定製。「域--活動」中記載了這個域下所有用戶的活動情況。
6、 「域--組」,我們可以自己建立一些便於管理的組,然後把一類的用戶歸到一個組中。
7、 「域--用戶」中,大家可以看到一開始我們建立的兩個帳號,一個Anonymous,一個ldr。現在就帳號ldr來對其中的細節設置說明一下。
A、「帳號」欄,如圖
對於一些不守規則的人,我們可以選擇「禁用帳號」,雖然有帳號,但可以使用戶一時間無法登錄;你也可以設置讓程序到達某個日期後自動刪除某個帳號;下面幾欄是這個帳號的基本信息,我們都可以在此更改,其中密碼改過後並不顯示,而是統一顯示<>,特別要注意選項「鎖定用戶於主目錄」,什麼意思呢?大家應該碰到,每次我們登錄到FTP伺服器上後,在根目錄下只顯示「/」,選擇這項選項後,就是這樣,如果不選,會出現什麼情況呢?你可以做一下試驗,在根目錄下將顯示「/f:/temp/」,也就是說顯示了你硬碟中的絕對
地址,這在某些情況下是很危險的,有不懷好意的高手,你就麻煩了!
你可以隱藏屬性為隱藏的文件,可以限制同一IP的登錄個數,是否允許用戶更改密碼(這需要客戶端軟體的支持),最大上傳下載的速
度,超時時間以及空閑時間,你也可以限制最大用戶數量,如20,說明同時只能有20個用戶登錄。
C、「目錄訪問」欄,如圖
在此你可以控制用戶對於文件目錄的許可權,對文件有讀取、寫入、刪除、追加、執行等操作,對於文件夾有列表、創建、刪除,以及是否繼承子目錄;如果覺得目錄不夠,你也可以添加可訪問的目錄。
D、「IP訪問」欄,如圖
在這里你可以規定某個IP是否可以訪問你的FTP伺服器,你可以拒絕它的訪問,只要填上相應的IP地址,以後由這個IP的訪問通通被攔下。
E、「上傳/下載率」欄,如圖
在這里你可以設置上傳和下載之間的比值,控制好上傳和下載之間的數據流量關系。
F、「配額」欄,如圖
這里你可以為每個FTP用戶設置磁碟空間,點擊「計算當前」,可以知道當前目前下的所有空間大小,在「最大」一欄中填入你想要限制的容量。
最後有一點,改過設置後一定要點擊右鍵,選擇「應用」使設置生效才行,否則一切都白做了!!
希望大家學會後,能為更多的人提供下載,享受寬頻帶來的快樂!
==========================================================================================================
SERV-U FTP的歡迎詞設置
讓你的SERV-U FTP看起來更專業一點
現在很多的朋友都用SERV-U做個人FTP的伺服器,有關如何使用SERV-U架設伺服器的文章很多了,這兒我就不多說了。不過大家不知道注意到了沒有,當你登陸很多FTP的時候,會顯示一些歡迎信息,比如說顯示你的IP,告訴你目前有多少人在使用FTP,帶寬是多少等等。。。看起來就比較的專業樣子。其實你自己也是可以做的,SERV-U這個軟體本身就有這個功能。下面我就說明以下如何在自己的FTP裡面加上這些信息。
第一、先建立一個文本文件,隨便取一個名字。我們這兒就取message.txt吧。
第二、這個這個文本文件裡面加上這些文字
-----------------------------------
歡迎來到XXX的個人FTP伺服器
你的IP地址是:%IP
目前伺服器所在的時間是 %time
已經有 %u24h 個用戶在最近24小時訪問過本FTP
本FTP伺服器已經運行了 %ServerDays 天,%ServerHours 小時 和 %ServerMins 分。
伺服器的運行情況:
所有登陸用戶數量: %loggedInAll total
當前登陸用戶數量: %Unow
已經下載位元組數: %ServerKbDown Kb
已經上傳位元組數: %ServerKbUp Kb
已經下載文件數: %ServerFilesDown
已經上傳文件數: %ServerFilesUp
伺服器平均帶寬: %ServerAvg Kb/sec
伺服器當前帶寬: %ServerKBps Kb/sec
------------------------------------
其中XXX可以改成你的名字
你也可以加上一些你自己認為喜歡的文字,不過要注意的是每行最好不要超過80個字元
其中以%開頭的都是一些變數,下面是SERV-U能支持的變數
時間和日期
%Time - 顯示你的計算機當前時間
%Date - 顯示你的計算機當前日期
伺服器的統計信息
%ServerDays - 顯示伺服器已經運行的天數
%ServerHours - 顯示伺服器已經運行的小時數
%ServerMins - 顯示伺服器已經運行的分鍾數
%ServerSecs - 顯示伺服器已經運行的秒數
%ServerKbUp - 顯示自從伺服器運行以來已經上傳的位元組數
%ServerKbDown - 顯示自從伺服器運行以來已經下載的位元組數
%ServerFilesUp - 顯示自從伺服器運行以來已經上傳的文件數
%ServerFilesDown - 顯示自從伺服器運行以來已經下載的文件數
%LoggedInAll - 顯示自從伺服器運行以來已經登陸的用戶數
%ServerAvg - 顯示伺服器的平均帶寬
%ServerKBps - 顯示伺服器的當前帶寬
伺服器的設定信息
%MaxUsers - 顯示伺服器能同時登陸的最大用戶數量
%MaxAnonymous - 顯示伺服器能同時登陸的最大匿名用戶數量
用戶信息
%Name - 顯示登陸的用戶名
%IP - 顯示登陸的用戶IP地址
%Dir - 顯示登陸的用戶的當前目錄
%Disk - 顯示登陸的用戶的當前磁碟
%DFree - 顯示登陸的用戶的當前磁碟空間,單位是MB
%FUp - 顯示登陸的用戶上傳的文件數量
%FDown - 顯示登陸的用戶下載的文件數量
%FTot - 顯示登陸的用戶上傳和下載的總的文件數量
%BUp - 顯示登陸的用戶上傳的位元組數,單位是KB
%Bdown - 顯示登陸的用戶下載的位元組數,單位是KB
%BTot - 顯示登陸的用戶上傳和下載的總位元組數,單位是KB
%TconM - 顯示登陸用戶連接時間,單位是分鍾
%TconS - 顯示登陸用戶連接時間,單位是秒,要和%TconM一起使用
%RatioUp - 顯示登陸用戶的上傳流量限制
%RatioDown - 顯示登陸用戶的下載流量限制
%RatioCredit - 顯示登陸用戶還有多少credit可以上傳和下載,這個是針對有些FTP是要上傳多少文件,才能下載多少文件而設置的
%QuotaUsed - 顯示登陸用戶的已經使用了多少空間,單位是KB
%QuotaLeft - 顯示登陸用戶的還有多少空間可以使用,單位是KB
%QuotaMax - 顯示登陸用戶的的最大空間,單位是KB
後面3個是針對有磁碟限制的用戶設置的
用戶數量
%UNow - 顯示當前有多少用戶連接
%UAll - 顯示從伺服器運行以來一共有多少用戶連接過
%U24h - 顯示最近24小時有多少用戶
%UAnonAll - 顯示當前總的匿名用戶數量
%UAnonThisIP - 顯示所有匿名登陸的用戶數
%UNonAnonAll - 顯示所有當前非匿名登陸用戶數
%UNonAnonThisIP - 顯示所有非匿名登陸用戶數
%UThisName - 顯示所有使用這個名字登陸的用戶數
自己在先建立一個.txt文件,輸入你想要顯示的文字,具體參數看上面的內容,然後在Serv_u內的server設置裡面,加入這個.txt文件就可以了
==========================================================================================================
——常見FTP登陸Log信息——
常見FTP登陸Log信息
1.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER anonymous
530 Sorry, no ANONYMOUS access allowed.
QUIT
這個就是不許匿名登錄啦
2.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER test
331 User name okay, need password.
PASS xxxxxx
530 Not logged in.
QUIT
一般是密碼輸入錯誤時出現的信息,但對於Serv-U來說,如果沒有這個帳號(test)存在,也會產生同樣的出錯信息。
3.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
ERROR: Connection timed out
這個表明對方未開機,也可能是對方不在你能訪問的范圍內
4.
Connecting to xxx.xxx.xxx.xxx Port 21 (#1)
ERROR: Connection refused
這個一般表明對方已開機,但未開啟FTP服務(沒有開Serv-U)
也可能為對方不提供在這個埠上的服務
5.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
Connected. Waiting for response.
Disconnected from server.
Connection attempt failed. Waiting for retry...
出現這個信息實在是很倒霉,你極有可能被對方Ban了。
如果只是Ban幾分鍾or幾小時or一天還好,不然只有和站長說說好話,讓他給你解封吧。
6.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
Connected. Waiting for response.
USER XXX
331 User name okay, need password
PASS xxxxxx
530 Not logged in, unauthorized IP address.
QUIT
這個有點麻煩,你的IP不在站長允許訪問的IP范圍內,只有和站長聯系,讓他把你的IP網段加入Allow Access列表裡吧
7.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER user
421 Too many users - please try again later.
哈哈,這個很常見吧,用戶太多
8.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER test
530 Not logged in, only one session from same IP allowed at a time.
QUIT
每個IP只能開一個下載,就不要用多線程啦,小心Ban了你。
----------------------------------------------------------------------------------------------
內網、區域網如何設置IP,建立FTP
首先,我們知道動態IP機器出去的最大問題是IP,因為動態IP機器的IP外網是無法識別的,我們討論的是最普通的區域網內工作站出去做FTP和WEB站點的問題!
動態域名解析正好能夠解決此類問題,它的原理是將本機的動態IP自動映射到預先申請好的虛擬域名上,這樣外面就可以通過訪問固定的虛擬域名來訪問到動態IP機器了。
<花生殼>該軟體使用方便,幾乎不用動什麼腦筋,唯一要做的事情就是去注冊,然後申請一個以vicp.net為後綴虛擬域名。
1.進入http://www.oray.net/,下載<花生殼>,並「注冊網域護照」!
2.注冊完成後,登陸「我的控制台」
3.進入「我的控制台」,點擊左下角的『我要.激活花生殼服務』
4.點擊「開始」進入
在『免費域名』填入不重復的你想要得名字就是你將來的域名,例如:AGHU
5.以後就是「服務條款」和「填寫站點信息」,這些地球人都知道怎麼填!
填完結束,恭喜你,你的域名已經有了!例如:你以後的域名就是AGHU.VICP.NET
申請完免費域名以後,就安裝你已經下載的<花生殼>,然後打開運行
輸入你的注冊名和密碼,等一下就會激活你的域名,興奮吧!
然後你的ftp和web就可以啟動咯!
架設ftp伺服器的事情,另外有帖子詳細介紹了!!
======================================
區域網內公開的ip只有一個,除非你是在主機上建私服,否則你無法公開你的私服,只能在區域網內,解決的辦法如下。
由於公網ip地址有限,不少isp都採用多個內網用戶通過代理和網關路由共用一個公網ip上internet的方法,這樣就限制了這些用戶在自己計算機上架設個人網站。要實現對我們來說是比較困難的,首先得得到系統管理員的支持才能夠實現。因為這一切的設置必須在代理伺服器上做的。要實現這一點,可以用windows 2000 服務者 的埠映射功能,除此之外winroute pro也具有這樣的功能,還有各種企業級的防火牆。而對於我們這些普通用戶,恐怕還是用windows 2000 的轉換以解決ip地址匱乏問題。在防火牆上實現nat後,可以隱藏受保護網路的內部拓撲結構,在一定程度上提高網路的安全性。如果反向nat提供動態網路地址及埠轉換功能,還可以實現負載均衡等功能埠映射功能可以讓內部網路中某台機器對外部提供www服務。 埠映射功能還可以完成一些特定代理功能,比如代理pop,smtp,telnet等協議。理論上可以提供六萬多個埠的映射,恐怕我們永遠都用不完的。
一、下面來介紹一下通過nat共享上網和利用nat來實現埠映射。
1、在windows 2000 server上,從管理工具中進入「路由和遠程訪問」(routing 並且 遙遠 access)服務,在伺服器上滑鼠右擊,-》「配置並啟用路由和遠程訪問」
2、點「下一步」
3、選「internet連接伺服器」,讓內網主機可以通過這台伺服器訪問internet.(最好先配置好nat共享,讓內網主機可以正常上網,不然的話,配好埠映射後再來配置nat共享就有點麻煩了,弄的不好nat還共享不了。)
4、選「設置有網路地址轉換(nat)路由協議的路由器」,不要選「設置internet連接共享(ics)」.(ics與nat的區別在於使用的容易程度上,為了啟用ics,只需要選擇一個復選框就可以了,而為了啟用nat,則需要更多的配置任務,此外,ics用於小型網路上的原因還在於:針對內部主機,它需要有一個固定的ip地址范圍;針對與外部網路的通信,它被限制在單個公共ip地址上;它只允許單個內部網路介面。)
5、先在此說一下我的網路情況:internet連接192.200.
2. 求助網路編程題目.C++
一.概述
TCP/IP協議是一個四層協議,它由應用層、傳輸層、網路層和鏈路層構成。TCP/IP協議棧的每一層都由許多協議構成,從而構成了一個協議簇。
應用層主要包括的協議有Telnet、FTP、HTTP、SMTP/POP3和DNS等。
傳輸層主要包括的協議有TCP和UDP。
網路層主要包括IP和IP的附屬協議。
數據鏈路層主要包括的協議有ARP(地址解析協議)、RARP協議、Ethernet協議等。
FTP(File Transfer Protocol)協議主要用來在網路上進行文件傳輸。FTP通訊除了有一個默認的埠21外,還有其他埠,同城兩個埠同時進行數據傳輸。一個是默認的埠(通常為21),主要進行控制連接,即進行命令協議及伺服器端響應碼的傳輸。另一個非標准埠主要進行數據,上傳下載文件等。
關於FTP協議和FTP命令的詳細描述,參考《Visual C 網路通信編程實用案例精選》。
實現FTP協議,有兩種方式,實用WinInet API和使用基本Winsock。對於一般應用,用WinInet效率要高,而且簡單。也可以用Winsock來編寫,這樣更加靈活,但是復雜度高且需要對協議非常熟悉。
二.VC開發
在項目中,為了開發效率,使用了WinInet的方式。
FTP是MFC的WinInet支持的三個Internet功能(HTTP, gopher)之一,我們需要先創建一個CInternetSession實例和一個CFtpConnection對象就可以實現和一個 FTP伺服器的通信。不需要直接創建CFtpConnection對象,而是通過調用CInternetsession::GetFtpConnection來完成這項工作。它創建CFtpConnection對象並返回一個指向該對象的指針。
要聯接到FTP伺服器,需要兩個步驟,首先必須創建一個CInternetSession對象,用類CInternetSession創建並初始化一個或幾個同時存在的Internet會話(session),並描述與代理伺服器的連接(如果有必要的話),如果在程序運行期間需要保持與Internet的連接,可以創建一個CInternetsession對象作為類CWinApp的成員。
然後利用CInternetsession對象獲取CFtpConnection對象。MFC中的類CFtpConnection管理我們與Internet伺服器的連接,並直接操作伺服器上的目錄和文件。
1.Ftp連接類的信息
下面我們簡要介紹連接類的信息
1.1 建立連接
CInternetsession對象
CInternetsession(LPCTSTR pstrAgent, DWORD dwConText, DWORD dwACCESSType, LPCTSTR pstrProxyName, LPCTSTR pstrProxyBypass, DWORD dwFlags);
在創建CInternetSession對象時調用這個成員函數,CInternetsession是應用程序第一個要調用的Internet函數,它將創始化內部數據結構,以備將來在應用程序中調用。如果dwFlags包含INTERNET_FLAG_ASYNC,那末從這個句柄派生的所有的句柄,在狀態回調常式注冊之前,都會出現非同步狀態。如果沒有打開Internet連接,CInternetsession就會拋出一個例外,AfxThrowInternetException。
GetFtpConnection()函數
CFtpConnection* CIternetsession::GetFtpConnection(LPCTSTR pstrServer, LPCTSTR pstrUserName, LPCTSTR pstrPassword, INTERNET_PORT nPort, BOOL bPassive);
調用這個函數建立一個FTP連接,並獲得一個指向CFtpConnection對象的指針,GetFtpConnection連接到一個FTP伺服器,創建並返回指向CFtpConnection對象的指針,它不在伺服器上進行任何操作。如果打算讀寫文件,必須進行分步操作。關於查找,打開和讀寫文件的信息需參考CFtpConnection和CFtpFileFind類。
對這個函數的調用返回一個指向CFtpConnection對象的指針。如果調用失敗,檢查拋出的CInternetException對象,就可以確定失敗的原因。
1.2 遠程目錄操作
CreateDirectory()函數
BOOL CreateDirectory( LPCTSTR pstrDirName );
Return Value
Nonzero if successful; otherwise 0. If the call fails, the Windows functionGetLastError may be called to determine the cause of the error.
Parameters
pstrDirName
A pointer to a string containing the name of the directory to create.
Remarks
Call this member function to create a directory on the connected server.
Use GetCurrentDirectory to determine the current working directory for this connection to the server. Do not assume that the remote system has connected you to the root directory.
The pstrDirName parameter can be either a partially or a fully qualified filename relative to the current directory. A backslash (\) or forward slash (/) can be used as the directory separator for either name. CreateDirectory translates the directory name separators to the appropriate characters before they are used.
注意:CreateDir 在FTP伺服器上創建已經存在的文件夾時會 返回FALSE,而且只能創建到當前(根)目錄下
RemoveDirectory()函數
BOOL RemoveDirectory( LPCTSTR pstrDirName );
Return Value
Nonzero if successful; otherwise 0. If the call fails, the Win32 functionGetLastError may be called to determine the cause of the error.
Parameters
pstrDirName
A pointer to a string containing the directory to be removed.
Remarks
Call this member function to remove the specified directory from the connected server.
Use GetCurrentDirectory to determine the server』s current working directory. Do not assume that the remote system has connected you to the root directory.
The pstrDirName parameter can be either a partially or fully qualified filename relative to the current directory. A backslash (\) or forward slash (/) can be used as the directory separator for either name. RemoveDirectory translates the directory name separators to the appropriate characters before they are used.
注意:DeleteDir文件夾中有內容,先刪除文件夾中文件,才可以刪文件夾,否則返回FALSE, 刪除不存在的文件夾返回FALSE
1.3 文件上傳下載刪除
GetFile()函數
BOOL GetFile(LPCTSTR pstrRemoteFile, LPCTSTR pstrLocalFile, BOOL bFailExists, DWORD dwAttributes, DWORD dwFlags, DWORD dwContext);
調用這個成員函數,可以從FTP伺服器取得文件,並且把文件保存在本地機器上。GetFile()函數是一個比較高級的常式,它可以處理所有有關從FTP伺服器讀文件,以及把文件存放在本地機器上的工作。如果dwFlags為 FILE_TRANSFER_TYPE_ASCII,文件數據的傳輸也會把控制和格式符轉化為Windows中的等階符號。默認的傳輸模式是二進制模式,文件會以和伺服器上相同的格式被下載。
pstrRemoteFile和 pstrLocalFile可以是相對於當前目錄的部分文件名,也可以是全文件名,在這兩個名字中間,都既可以用反斜杠(\)或者正斜杠(/)來作為文件名的目錄分隔符,GetFile()在使用前會把目錄分隔符轉化為適當的字元。
可以用自己選擇的值來取代dwContext默認的值,設置為上下文標識符與CFtpConnection對象的定位操作有關,這個操作由CFtpConnection中的CInternetSession對象創建。返回給CInternetsession::OnStatusCallBack的值指出了所標識操作的狀態。
如果調用成功,函數的返回為非0,否則返回0,如果調用失敗,可以調用Win32函數GetLastError(),確認出錯的原因。
需要注意:本地路徑須為絕對路徑,遠程路徑可為相對路徑,如hello/hello.zip,如果本地文件已經存在,則返回FALSE。
PutFile()函數
BOOL PutFile(LPCTSTR pstrLocalFile, LPCTSTR pstrRemoveFile ,DWORD dwFlags, DWORD dwContext);
調用這個成員函數可以把文件保存到FTP伺服器。PutFile()函數是一個比較高級的常式,它可以處理有關把文件存放到伺服器上的工作。只發送數據,或要嚴格控制文件傳輸的應用程序,應該調用OpenFile和 CInternet::Write。利用自己選擇的值來取代dwContext默認的值,設置為上下文標識符,上下文標識符是 CInternetSession對象創建的CFtpConnection對象的特定操作有關,這個值返回給CInternetsession::OnStateCallBack,從而把操作的狀態通報給它所標識的上下文。
如果調用成功,函數的返回為非0,否則返回0,如果調用失敗,可以調用Win32函數GetLastError(),確認出錯的原因。
主要注意:如果重復上傳文件,會把伺服器上的文件覆蓋掉,且可以上傳特定文件夾下,如hello/hello.zip
Remove()函數
BOOL Remove( LPCTSTR pstrFileName );
如果調用成功,函數的返回為非0,否則返回0,如果調用失敗,可以調用Win32函數GetLastError(),確認出錯的原因。
pstrFileName
需要刪除的伺服器上的文件名
Call this member function to delete the specified file from the connected server.
The pstrFileName parameter can be either a partially qualified filename relative to the current directory or fully qualified. A backslash (\) or forward slash (/) can be used as the directory separator for either name. The Remove function translates the directory name separators to the appropriate characters before they are used.
注意:Remove如果刪除的文件不存在,則返回FALSE,支持相對路徑
2. 測試實例
2.1 例一 連接到FTP站點
建立連接到ftp.microsoft.com的程序,它是一個單文檔程序。並且連接由視圖類的構造函數完成。
建立單文檔程序ftp
在ftpview.h中加入包含#include < afxinet.h >
在ftpview.h中添加如下的成員變數
public:
CInternetSession *m_pInetsession;
CFtpConnection *m_pFtpConnection;
在ftpview.cpp中的ftpview構造函數中加入下面的代碼
CFtpView::CFtpView()
{
m_pInetSession=new CInternetsession
(AfxGetAppName(),1,
PRE_CONFIG_INTERNET_ACCESS);
try
{
m_pFtpConnection=m_pInetsession->
GetFtpConnection("FTP.MICROSOFT.COM");
}
catch(CInternetException *pEx)
{
TCHAR szError[1024];
if(pEx->GetErrorMessage(szError,1024))
AfxMessageBox(szError);
else
AfxMessageBox("There was an exception");
pEx->Delete();
m_pFtpConnection=NULL;
}
}
在ftpview.cpp中的ftpview析構函數中加入下面的代碼
CFtpView::~CFtpView()
{
if(m_pFtpConnection!=NULL)
{
m_pFtpConnection->Close();
delete m_pFtpConnection;
}
delete m_pInetsession;
}
編譯並且執行程序,如果連接出現問題,將會在一個消息框中報告出錯消息。
2.2 例二 發送文件到FTP文件伺服器
創建一個發送文件到FTP文件伺服器的程序
建立單文檔程序ftpfw, 在ftpfwview.h中加入包含 #include < afxinet.h >
在ftpfwview.h中添加如下的成員變數
public:
bool m_bConnectionAttempted;
int m_nFileStatus;
在ftpview.cpp中的ftpview構造函數中加入下面的代碼
CFtpfwView::CFtpfwView()
{
m_bConnectionAttempted=false;
}
使用ClassWizard加入新的類CFtpThread,該類派生於CWinThread 在ftpthread.h中加入如下變數
public:
static UINT PutFile(LPVOID Status);
添加新類成員函數代碼
UINT CFtpThread::PutFile(LPVOID Status)
{
int *pnFileStatus;
CInternetSession *pInetsession;
CFtpConnection *pFtpConnection=NULL;
pnFileStatus=(int *)Status;
*pnFileStatus=0;
pInetsession=new CInternetsession(AfxGetAppName(),1,
PRE_CONFIG_INTERNET_ACCESS);
try
{
pFtpConnection=pInetsession->
GetFtpConnection("192.34.45.0");
}
catch(CInternetException *pEx)
{
pEx->Delete();
pFtpConnection=NULL;
*pnFileStatus=-1;
goto BallOut;
}
*pnFileStatus =1;
pFtpConnection->Remove("test.txt");
if(!pFtpConnection->PutFile
("test.txt","test.txt"))
*pnFileStatus=-2;
else
*pnFileStatus=2;
BallOut:
if(pFtpConnection!=NULL)
{
pFtpConnection->Close();
delete pFtpConnection;
}
delete pInetsession;
AfxEndThread(0);
return false;
}
編輯ftpfwview.cpp中的OnDraw()函數
void CFtpfwView::OnDraw(CDC* pDC)
{
CFtpfwDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if(!m_bConnectAttempted)
{
m_bConnectAttempted=TRUE;
AfxBeginThread((AFX_THREADPROC)
CFtpThread::PutFile,&m_nFileStatus);
}
}
編譯並且執行程序,在連接和傳輸的過程中,應用程序仍然可以作自己的工作,這是因為傳輸的過程發生在線程中。
3.封裝FTPTransfer類
3.1 頭文件
///////////////////////////////////////////////////////////
// FTPTransfer.h
// interface of the FTPTransfer mole
// Created on: 24-July-2010
// Original author: Andrew Zhang
///////////////////////////////////////////////////////////
#ifndef _FTPTRANSFER_H_
#define _FTPTRANSFER_H_
#include <afxinet.h> // for ftp api functions
class FTPTransfer
{
public:
FTPTransfer();
~FTPTransfer();
BOOL Login();
void Logout();
BOOL CreateRemoteDir(LPCTSTR pstrDirName);
BOOL DeleteRemoteDir(LPCTSTR pstrDirName);
BOOL Upload(LPCTSTR pstrLocalFile, LPCTSTR pstrRemoteFile);
BOOL Download(LPCTSTR pstrRemoteFile, LPCTSTR pstrLocalFile);
BOOL DeleteRemoteFile(LPCTSTR pstrFileName);
BOOL UploadAll();
CString GetLastError();
protected:
private:
void Config();
CString m_csServer;
CString m_csUsername;
CString m_csPassword;
unsigned int m_nPort;
CInternetSession *m_pSession;
CFtpConnection *m_pConn;
static CString lastError;
public:
// 需要傳輸的文件夾
CStringArray m_astrAllDirName;
CString m_csLocalDir; // 本地圖像所在路徑,需要外界賦值。
};
#endif
3.2 設置配置項
可以配置伺服器的IP,Port,用戶名,密碼等
配置項樣例:
[FTPTransfer]
FTPServer = 192.168.29.253
Username = andrew
Password = zhang
Port = 21
;Ftp伺服器的IP 賬戶 密碼
3.3 使用說明
FTPTransfer transfer;
transfer.m_csLocalDir = url + strImgNo.c_str();
transfer.m_astrAllDirName.Add(csImgNo);
try
{
if (!transfer.UploadAll())
{
CString strlog(_T("[threadOperationTransfer]: "));
ServiceLog.write_log("[threadOperationTransfer]: ERROR! Upload error.");
CString csError = transfer.GetLastError();
ServiceLog.write_log((LPCWSTR)(strlog+ csError));
return -1; // FTP Error;
}
}
catch (...)
{
CString strlog(_T("[threadOperationTransfer]: "));
ServiceLog.write_log("[threadOperationTransfer]: ERROR! upload except:");
CString csError = transfer.GetLastError();
ServiceLog.write_log((LPCWSTR)(strlog+ csError));
return -1;
}
三.總結
通過以上的程序我們可以明白FTP的工作原理,因為基於應用,解釋的還比較淺顯。另外上傳和下載需要比較久的時間,可以考慮設計多線程的方式來實現,這樣不至於程序阻塞。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/loadstar_kun/archive/2010/08/06/5790288.aspx
3. C語言用Socket連接FTP服務端發送帳號的問題
敢不敢排個版
4. 高手進,關於C語言在windows上建立多線程的問題(VC6.0上實現)
東西,往往實例才是最讓人感興趣的,老是學基礎理論,不動手,感覺沒有成就感,呵呵。
下面先來一個實例。我們通過創建兩個線程來實現對一個數的遞加。
或許這個實例沒有實際運用的價值,但是稍微改動一下,我們就可以用到其他地方去拉。
下面是我們的代碼:
/*thread_example.c : c multiple thread programming in linux
*author : falcon
*E-mail : [email protected]
*/
#include <pthread.h>
#include <stdio.h>
#include <sys/time.h>
#include <string.h>
#define MAX 10
pthread_t thread[2];
pthread_mutex_t mut;
int number="0", i;
void *thread1()
{
printf ("thread1 : I'm thread 1\n");
for (i = 0; i < MAX; i++)
{
printf("thread1 : number = %d\n",number);
pthread_mutex_lock(&mut);
number++;
pthread_mutex_unlock(&mut);
sleep(2);
}
printf("thread1 :主函數在等我完成任務嗎?\n");
pthread_exit(NULL);
}
void *thread2()
{
printf("thread2 : I'm thread 2\n");
for (i = 0; i < MAX; i++)
{
printf("thread2 : number = %d\n",number);
pthread_mutex_lock(&mut);
number++;
pthread_mutex_unlock(&mut);
sleep(3);
}
printf("thread2 :主函數在等我完成任務嗎?\n");
pthread_exit(NULL);
}
void thread_create(void)
{
int temp;
memset(&thread, 0, sizeof(thread)); //comment1
/*創建線程*/
if((temp = pthread_create(&thread[0], NULL, thread1, NULL)) != 0) //comment2
printf("線程1創建失敗!\n");
else
printf("線程1被創建\n");
if((temp = pthread_create(&thread[1], NULL, thread2, NULL)) != 0) //comment3
printf("線程2創建失敗");
else
printf("線程2被創建\n");
}
void thread_wait(void)
{
/*等待線程結束*/
if(thread[0] !=0) { //comment4
pthread_join(thread[0],NULL);
printf("線程1已經結束\n");
}
if(thread[1] !=0) { //comment5
pthread_join(thread[1],NULL);
printf("線程2已經結束\n");
}
}
int main()
{
/*用默認屬性初始化互斥鎖*/
pthread_mutex_init(&mut,NULL);
printf("我是主函數哦,我正在創建線程,呵呵\n");
thread_create();
printf("我是主函數哦,我正在等待線程完成任務阿,呵呵\n");
thread_wait();
return 0;
}
下面我們先來編譯、執行一下
引文:
falcon@falcon:~/program/c/code/ftp$ gcc -lpthread -o thread_example thread_example.c
falcon@falcon:~/program/c/code/ftp$ ./thread_example
我是主函數哦,我正在創建線程,呵呵
線程1被創建
線程2被創建
我是主函數哦,我正在等待線程完成任務阿,呵呵
thread1 : I'm thread 1
thread1 : number = 0
thread2 : I'm thread 2
thread2 : number = 1
thread1 : number = 2
thread2 : number = 3
thread1 : number = 4
thread2 : number = 5
thread1 : number = 6
thread1 : number = 7
thread2 : number = 8
thread1 : number = 9
thread2 : number = 10
thread1 :主函數在等我完成任務嗎?
線程1已經結束
thread2 :主函數在等我完成任務嗎?
線程2已經結束
實例代碼里頭的注釋應該比較清楚了吧,下面我把網路上介紹上面涉及到的幾個函數和變數給引用過來。
引文:
線程相關操作
一 pthread_t
pthread_t在頭文件/usr/include/bits/pthreadtypes.h中定義:
typedef unsigned long int pthread_t;
它是一個線程的標識符。
二 pthread_create
函數pthread_create用來創建一個線程,它的原型為:
extern int pthread_create __P ((pthread_t *__thread, __const pthread_attr_t *__attr,
void *(*__start_routine) (void *), void *__arg));
第一個參數為指向線程標識符的指針,第二個參數用來設置線程屬性,第三個參數是線程運行函數的起始地址,最後一個參數是運行函數的參數。這里,我們的函數thread不需要參數,所以最後一個參數設為空指針。第二個參數我們也設為空指針,這樣將生成默認屬性的線程。對線程屬性的設定和修改我們將在下一節闡述。當創建線程成功時,函數返回0,若不為0則說明創建線程失敗,常見的錯誤返回代碼為EAGAIN和EINVAL。前者表示系統限制創建新的線程,例如線程數目過多了;後者表示第二個參數代表的線程屬性值非法。創建線程成功後,新創建的線程則運行參數三和參數四確定的函數,原來的線程則繼續運行下一行代碼。
三 pthread_join pthread_exit
函數pthread_join用來等待一個線程的結束。函數原型為:
extern int pthread_join __P ((pthread_t __th, void **__thread_return));
第一個參數為被等待的線程標識符,第二個參數為一個用戶定義的指針,它可以用來存儲被等待線程的返回值。這個函數是一個線程阻塞的函數,調用它的函數將一直等待到被等待的線程結束為止,當函數返回時,被等待線程的資源被收回。一個線程的結束有兩種途徑,一種是象我們上面的例子一樣,函數結束了,調用它的線程也就結束了;另一種方式是通過函數pthread_exit來實現。它的函數原型為:
extern void pthread_exit __P ((void *__retval)) __attribute__ ((__noreturn__));
唯一的參數是函數的返回代碼,只要pthread_join中的第二個參數thread_return不是NULL,這個值將被傳遞給 thread_return。最後要說明的是,一個線程不能被多個線程等待,否則第一個接收到信號的線程成功返回,其餘調用pthread_join的線程則返回錯誤代碼ESRCH。
在這一節里,我們編寫了一個最簡單的線程,並掌握了最常用的三個函數pthread_create,pthread_join和pthread_exit。下面,我們來了解線程的一些常用屬性以及如何設置這些屬性。
互斥鎖相關
互斥鎖用來保證一段時間內只有一個線程在執行一段代碼。
一 pthread_mutex_init
函數pthread_mutex_init用來生成一個互斥鎖。NULL參數表明使用默認屬性。如果需要聲明特定屬性的互斥鎖,須調用函數 pthread_mutexattr_init。函數pthread_mutexattr_setpshared和函數 pthread_mutexattr_settype用來設置互斥鎖屬性。前一個函數設置屬性pshared,它有兩個取值, PTHREAD_PROCESS_PRIVATE和PTHREAD_PROCESS_SHARED。前者用來不同進程中的線程同步,後者用於同步本進程的不同線程。在上面的例子中,我們使用的是默認屬性PTHREAD_PROCESS_ PRIVATE。後者用來設置互斥鎖類型,可選的類型有PTHREAD_MUTEX_NORMAL、PTHREAD_MUTEX_ERRORCHECK、 PTHREAD_MUTEX_RECURSIVE和PTHREAD _MUTEX_DEFAULT。它們分別定義了不同的上所、解鎖機制,一般情況下,選用最後一個默認屬性。
二 pthread_mutex_lock pthread_mutex_unlock pthread_delay_np
pthread_mutex_lock聲明開始用互斥鎖上鎖,此後的代碼直至調用pthread_mutex_unlock為止,均被上鎖,即同一時間只能被一個線程調用執行。當一個線程執行到pthread_mutex_lock處時,如果該鎖此時被另一個線程使用,那此線程被阻塞,即程序將等待到另一個線程釋放此互斥鎖。
注意:
1 需要說明的是,上面的兩處sleep不光是為了演示的需要,也是為了讓線程睡眠一段時間,讓線程釋放互斥鎖,等待另一個線程使用此鎖。下面的參考資料1里頭說明了該問題。但是在linux下好像沒有pthread_delay_np那個函數(我試了一下,提示沒有定義該函數的引用),所以我用了sleep來代替,不過參考資料2中給出另一種方法,好像是通過pthread_cond_timedwait來代替,里頭給出了一種實現的辦法。
2 請千萬要注意里頭的注釋comment1-5,那是我花了幾個小時才找出的問題所在。
如果沒有comment1和comment4,comment5,將導致在pthread_join的時候出現段錯誤,另外,上面的comment2和comment3是根源所在,所以千萬要記得寫全代碼。因為上面的線程可能沒有創建成功,導致下面不可能等到那個線程結束,而在用pthread_join的時候出現段錯誤(訪問了未知的內存區)。另外,在使用memset的時候,需要包含string.h頭文件哦
5. 各位大哥,小弟想請問下C/C++伺服器端編程是做什麼的。需要學些什麼。麻煩詳細一點。謝謝
C/C++的伺服器端,比如我們經常玩的網游,那個伺服器端大部分都是C/C++編程的。還有本地連接,網上鄰居,ftp協議之類的,基本上windows的客戶端網路服務都有對應的伺服器。
當然要學習C/C++伺服器編程,涉及的方面就比較多了,重要的有網路連接,多線程,數據存儲等等的。
你可以參考一下騰訊在C/C++伺服器編程工程師的要求。
工作要求:
工作有激情, 認真負責,盡職盡責,溝通協作意識良好,能夠承擔工作壓力,具備良好的學習能力和分析解決問題能力;
全面的軟體知識結構(操作系統、數據結構、資料庫系統、網路安全),有兩年以上互聯網應用開發經驗,有無線互聯網後台開發經驗優先;
熟練使用C/C++語言,熟悉Linux下調試、開發環境,對多線程、緩存系統、高性能、高可用系統有經驗者優先;
熟悉TCP/IP協議,能熟練使用網路分析工具分析網路相關的故障,有一定的網路編程經驗;
熟悉資料庫的設計、使用與基本調優,熟練使用mysql資料庫進行業務開發;
熟悉Linux,具備Linux下的系統開發經驗;
具備大並發、分布式存儲、大容量系統開發運營經驗優先。
6. FTP自動上傳文件成功後刪除原文件。
完全可以的,我用的是FLASHFXP的FTP上傳下載軟體.
每次不正常退出,他都可以保存你上的的任務.
重新打開後,就提示載入上次失敗的任務.
軟體下載地址:
http://www.stasp.com/down/open.asp?id=38
7. 請介紹最優秀,用的人最多的FTP下載工具~~~~~
Cute-FTP可以的
教程如下
1、什麼是ftp
ftp是英文file transfer protocol(文件傳輸協議)的縮寫。顧名思義,ftp就是專門用來傳輸文件的協議。工欲善其事,必先利其器。常在網上走,哪能不用ftp。有了ftp,你就可以迅速得到時髦的軟體、游戲、在微軟發布的當天使用上ie5、或者給你的主板顯卡下載最新的驅動程序、給你的殺毒軟體載入最新的病毒資料庫……好處說也說不完。
2、常用的ftp軟體
在很久很久以前的unix的系統上的ftp程序是基於命令行的,有點象dos的模樣。現在的window95 /98/nt仍然有基於命令行的字元界面的ftp程序,供骨灰級的網蟲練習他們的指法。命令行的ftp使用起來自然不方便,首先要掌握幾十條命令不說,字元的屏幕上通常只能顯示25或50行,如果文件的列表是一長串,沒辦法,你只能看到最後面的一些了。類似於windows的圖形界面流行開之後,自然就有了圖形界面的ftp程序。ws_ftp是其中資格比較老的一個,cuteftp相對年輕一些,而後來的bullet proof、leaf ftp、crysta l就屬於比較前衛的了。另外,大部分瀏覽器,如ie、netscape也支持ftp協議。不過瀏覽器的ftp功能只是用來作為www的輔助,只能完成基本的操作,不夠專業。我們這里來介紹ftp程序的優秀軟體——cute ftp。
3、認識Cute-FTP軟體
首先,我們要安裝CuteFTP,我這里用的是它的最新版CuteFTP 4.2,大家如果找不到這個版本,可以試著從CuteFTP的官方站點下載,或使用以前的版本,也沒什麼問題,操作都是類似的。按照軟體提示一步步的安裝,在安裝中軟體會提示您是否安裝CuteHTML,您可以依照愛好選擇,CuteHTML是一款類似Ultra Edit的文本編輯器(見圖1)。
開啟CuteFTP後,軟體會先彈出一個類似幫助的Tip of the day文本對話框,如果你是第一次使用可以先按照提示看看(見圖2)。
圖1
圖2
關掉Tip of the day後,會出現一個對話框,寫著Site Manager, 裡面會附上一些英文站點的資料,您可以自行加入常用的FTP站點地址。本文稍後介紹,按Exit關掉Site Manager(見圖3)。
圖3
關掉Site Manager後顯示的是CuteFTP的工作視窗,共分四個區域,下面簡單介紹一下它們:
上部區域:這里是FTP站點所顯示的信息區,可以由這里知道目前連接的情形,例如該站給使用者的歡迎或者提示信息、是否支持斷點續傳、正在下載哪個文件、是否已經連接……。
下部左區域:這里顯示的是你的硬碟要上傳(Upload)及要下載(Download)的所在目錄,未設定前默認顯示的是CuteFTP的安裝目錄(如C:\Programs Files\GlobalSCAPE\cuteFTP)。當然,如果我們不想把下載下來的文件都放在這里(我們建議您明確分類、存放下載文件,不然以後對於數據備份和查找就變成一件非常困難的事情),可以指定路徑存放,稍候在下載中再說。
下部右區域:在這里顯示的是FTP站點裡面的目錄和文件(比如文件名,大小,屬性等我們都可以非常清楚的看見)。
底部區域:可以創建排程,一次准備好要上傳或者下載的文件,減免上傳下載過程中所造成的時間浪費(見圖4)。
圖4
4、使用Cute-FTP軟體
好,熟悉完視窗,我們現在就把做好的網站傳到網路的伺服器上。
首先要確定你是否擁有可以上傳的FTP伺服器,在網上有許多能夠提供FTP上傳維護功能的免費個人主頁站點,你要是沒有的話,可以申請一個(未避廣告嫌疑,我就不推薦了)。或是你花錢租用一個。你會得到相映的地址、名字、口令等參數,其次要保證你現在在線。(這就不用教了吧?)
先教你一個快速連接的方法,在工作視窗的頂部,有一個黃色的閃電標志(Quick Connect),按下它,會彈出一個浮動菜單,裡面有URL、User、Name、Password、Port等幾項設置。在這里你可以填上你所要上傳的地址、用戶名及密碼(見圖5)。
圖5
填好後,按一下右側的閃電標志(Connect),就會在FTP站所顯示的信息區里看見連接情況。
連接成功後,你會在下部右區域看見FTP站點裡面的目錄和文件。如圖6所示,在我所登錄的站點里,分為三個文件夾和若干文件。
圖6
這時我打開下部左區域的路徑菜單,找到本地硬碟上要上傳的文件夾或文件,選中它們後用滑鼠拖到伺服器上相應的目錄下(也可以使用工具欄上的相應快捷按鈕),或者新建一個文件夾(只要你許可權夠大)(見圖7)。
圖7
Cute-FTP工具軟體的使用(二)
1、設置Cute-FTP
啟動Cute-FTP軟體後,首先出現的是「FTP Site Manager」窗口,我們需要在這個窗口中進行必要的設置後才能進入系統主窗口來執行文件的上傳和下載。如圖8所示,將滑鼠移到『FTP sites』的地方,然後我們按下它下面的那一排按鈕中的『Add sites』,告訴電腦我們要新增一個主機站(這個站就是我們要將網頁上傳的地方),如圖9所示:
圖8
圖9
按下『Add sites』之後,我們便會 看到一個設置窗口,這個窗口主要是要讓我們來設置我們要上傳主機的詳細資料,就以本站的例子來說好了,如圖10所示:
圖10
標號 1:這一格只是讓你替伺服器(就是你要放上網頁的電腦主機啦!)取個名稱罷了,隨您怎麼填都可以,像工友就自行取為『首頁製作百寶箱』,下次再進入CuteFTP時,就直接選取『首頁製作百寶箱』就可以直接連到該網頁伺服器器,直不需要再輸入一堆繁雜的設置了。
標號 2:這一格非常重要,須填上伺服器的所在位置,在這里,我們所用的伺服器地址是『202.192.175.19』。或許有人會問,那我到底要填上什麼呢?這...我也不知道,我怎麼會知道您網頁放在哪呢?如果您是線上申請的免費網址,那麼該網站應該都會告訴您要上傳到哪裡 (也就是一連串的主機位置),不然,就問問讓您放網頁的伺服器管理員吧!對了!在填的時候千萬別加上ftp://..... or http://.....這些都是無法執行的。
標號 3:通常連通主機後,伺服器會詢問您的帳號,這一格就填上您進入伺服器的用戶號即可。
標號 4:檢查完帳號後就會要求輸入密碼,這一格就是要您填密碼啦!注意喔!這里所謂的帳號密碼是指『進入該伺服器的帳號密碼』而非,您撥接上網的帳號密碼,通常伺服器管理員都會通知您帳號密碼是多少,要不然就是當初您在申請免費網址時自行設置的那一組帳號密碼就是了。
標號 5:進入伺服器方式設置,通常是『Normal』,也就是說需要帳號密碼才進得去,如果選第二項就表示任何人都可以進去,那事情就大條啦!
標號 6:文件上傳模式設置,選第三項『Auto-Detect』比較方便,它會自行探測文件類型做出最適合的上傳方式。
標號 7:嗯...這格我就較不了解 了...反正選『Auto-Detect』這一項准沒錯。
標號 8:設置伺服器端的路徑,設不設都無所謂啦!有設的話,以後再進入時,就不用切換一堆路徑,而可以直達你要上傳的目錄。所以要設置的話,先決條件是,您要知道您放網頁的路徑及目錄。
標號 9:設置自己電腦的內部目錄,像我就設置C:www,它只要一連通伺服器,便會自行切換到C:www這目錄,工友就可以不用在那裡找目錄而可以省下一些時間。
OK!設好按下確定之後,你應該可以看見剛剛設置的伺服器名稱出現在右上的窗口中,如圖11所示,而它的下方會顯現其網路位置如圖12:
圖11
圖12
圖13
看到之後便表示您設置成功了(但不代表你設置的值是正確的,要連得通才算數),下次再執行CuteFTP時,就可以直接選這里來進入了,這樣就不用再進行繁復的設置了。
最後一個步驟,按下『Connect』連接(如圖13),就行啦!接下來就是期待接通了!
2、連接伺服器
接下來映入眼的就是整個CuteFTP的使用界面,上面是工具列,工具列下方是狀態列,左下是自己電腦的目錄,右下是伺服器的目錄。現在就先說說工具列:
這是左半段圖標,其中順數第二個為連接按鈕。
這是右半段圖標,其中順數第三個和第四個即為下載和上傳按鈕。
整個畫面看起來如圖14:
圖14
OK!進入最重要的主題:『如何上傳文件』??
首先,先確定已經連通伺服器,這只要看看狀態列就知道了,如上圖的狀態列所示,就是連通後的樣子。
切換到適當目錄。先看看左半區域窗口,這就是自己電腦的目錄。例如你的所有網頁文件都放在C:\WWW的目錄下,所以,先要切換到C:\WWW目錄中。
右半區域窗口中是你存放網頁在伺服器上的目錄位置,例如你的網站是放在伺服器的 newhd/home/tad/public_html/中,所以就在右半區域窗口中切換到你存放網頁的目錄。做完這兩個動作,上傳大業已經完成大半了!
接下來,回到左下窗口選取欲上傳的文件(按住Shift鍵再選取文件可以連續選取多個文件,按住Ctrl鍵再選取文件可以選取多個不連續文件),選取完後,按下工具列的『往上』鍵,就可以啦!如圖15:
ftp軟體有很多種,使用方法大同小異。同時,他還有下載的功能,你 可以利用這一點從伺服器上下載軟體,速度比其他方法快多了
另外請大家千萬注意,如果需要編輯修改你的文件,你必須先將其下載到本地硬碟上才可進行修改,在伺服器上是不能直接進行修改的。
3、評價
採用這種方法來登錄FTP伺服器,需要在客戶端中安裝相應的工具軟體,Cute-FTP軟體是一個老牌經典的FTP軟體。
●使用方便,性能穩定,安全性好;
●上傳和下載的速度比較快;
●支持斷點續傳,支持多線程工作;
●允許對整個目錄的覆蓋和刪除,支持文件隊列管理;
等等……
8. FTP上傳文件錯誤
150 opening ascii mode data connection for /bin/ls.
426 data connection closed, transfer aborted.
這種情況可能是你所在網路安裝了防火牆(或代理),該防火牆(或代理)禁止來自遠程的連接,426 data connection closed, transfer aborted表明了這一點。這時候你可以使用被動傳輸模式(pasv模式),來避免該限制,進行數據傳輸.
解決辦法是在該ftp標簽的站點設置中,設置為被動模式pasv模式.同樣,如果前面有網友出現200 port command successful.
連不上的情況,也用上面方法
1.
connected. waiting for response.
220 serv-u ftp server v4.0 for winsock ready...
user anonymous
530 sorry, no anonymous access allowed.
quit
不允許匿名登錄
2.
connected. waiting for response.
220 serv-u ftp server v4.0 for winsock ready...
user test
331 user name okay, need password.
pass xxxxxx
530 not logged in.
quit
一般是密碼輸入錯誤時出現的信息。密碼不對喲!
3.
connecting to xxx.xxx.xxx.xxx, port 21 (#1)
error: connection timed out
這個表明對方未開機,也可能是對方不在你能訪問的范圍內。可能小區的伺服器檢修中。
4.
connecting to xxx.xxx.xxx.xxx port 21 (#1)
error: connection refused
這個一般表明對方已開機,但未開啟ftp服務(沒有開serv-u)
也可能為對方不提供在這個埠上的服務
5.
connecting to xxx.xxx.xxx.xxx, port 21 (#1)
connected. waiting for response.
disconnected from server.
connection attempt failed. waiting for retry...
出現這個信息實在是很倒霉,你極有可能把重試時間定的太短伺服器封了你喲!
6.
connecting to xxx.xxx.xxx.xxx, port 21 (#1)
connected. waiting for response.
user xxx
331 user name okay, need password
pass xxxxxx
530 not logged in, unauthorized ip address.
quit
沒有登記ip!或者登記的ip和你現在下載的不一樣!趕快重新登記吧!
7.
227 entering passive mode (218,3,87,224,10,232)
retr hfdx-tsoaf.sub.rar
550 sorry, insufficient credit for download - upload first.
傳輸已失敗!
傳輸隊列已完成
你的流量不夠了,重新購買吧!
8.
connected. waiting for response.
220 serv-u ftp server v4.0 for winsock ready...
user user
421 too many users - please try again later.
說明當前你所屬的下載組的下載人數已到上限,請過些時候再嘗試,用Flashget等的下載工具不斷嘗試聯接的人請講嘗試時間調大一點,否則會被伺服器封閉一段時間的IP
9.
150 opening ascii mode data connection for /bin/ls.
426 data connection closed, transfer aborted.
這種情況可能是你所在網路安裝了防火牆(或代理),該防火牆(或代理)禁止來自遠程的連接,426 data connection closed, transfer aborted表明了這一點。這時候你可以使用被動傳輸模式(pasv模式),來避免該限制,進行數據傳輸.
解決辦法是在該ftp標簽的站點設置中,設置為被動模式pasv模式.同樣,如果前面有網友出現200 port command successful.
連不上的情況,也用上面方法
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
ERROR: Connection timed out
這個表明對方未開機,也可能是對方不在你能訪問的范圍內
-----------------------------------
Connecting to xxx.xxx.xxx.xxx Port 21 (#1)
ERROR: Connection refused
這個一般表明對方已開機,但未開啟FTP服務(沒有開Serv-U)
也可能為對方不提供在這個埠上的服務
-----------------------------------
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
Connected. Waiting for response.
Disconnected from server.
Connection attempt failed. Waiting for retry...
出現這個信息實在是很倒霉,你極有可能被對方Ban了。
如果只是Ban幾分鍾or幾小時or一天還好,不然只有和站長說說好話,讓他給你解封吧。
-----------------------------------
110 Restart marker reply. In this case, the text is exact and not left to
the particular implementation; it must read: MARK yyyy = mmmm where yyyy is
User-process data stream marker, and mmmm server s equivalent marker (note
the spaces between markers and "=").
重新啟動標志回應。這種情況下,信息是精確的並且不用特別的處理;可以這樣看:標記 yyyy = mmm 中 yyyy是 用戶進程數據流標記,mmmm是伺服器端相應的標記(注意在標記和等號間的空格)
-----------------------------------
120 Service ready in nnn minutes.
服務在NNN時間內可用
-----------------------------------
125 Data connection already open; transfer starting.
數據連接已經打開,開始傳送數據.
-----------------------------------
150 File status okay; about to open data connection.
文件狀態正確,正在打開數據連接.
-----------------------------------
200 Command okay.
命令執行正常結束.
-----------------------------------
202 Command not implemented, superfluous at this site.
命令未被執行,此站點不支持此命令.
-----------------------------------
211 System status, or system help reply.
系統狀態或系統幫助信息回應.
-----------------------------------
212 Directory status.
目錄狀態信息.
-----------------------------------
213 File status.
文件狀態信息.
-----------------------------------
214 Help message.On how to use the server or the meaning of a particular
non-standard command. This reply is useful only to the human user. 幫助信息。
關於如何使用本伺服器或特殊的非標准命令。此回復只對人有用。
-----------------------------------
215 NAME system type. Where NAME is an official system name from the list
in the Assigned Numbers document.
NAME系統類型。
-----------------------------------
220 Service ready for new user.
新連接的用戶的服務已就緒
-----------------------------------
221 Service closing control connection.
控制連接關閉
-----------------------------------
225 Data connection open; no transfer in progress.
數據連接已打開,沒有進行中的數據傳送
-----------------------------------
226 Closing data connection. Requested file action successful (for example,
file transfer or file abort).
正在關閉數據連接。請求文件動作成功結束(例如,文件傳送或終止)
-----------------------------------
227 Entering Passive Mode (h1,h2,h3,h4,p1,p2).
進入被動模式
-----------------------------------
230 User logged in, proceed. Logged out if appropriate.
用戶已登入。 如果不需要可以登出。
-----------------------------------
250 Requested file action okay, completed.
被請求文件操作成功完成
-----------------------------------
257 "PATHNAME" created.
路徑已建立
-----------------------------------
331 User name okay, need password.
用戶名存在,需要輸入密碼
-----------------------------------
332 Need account for login.
需要登陸的賬戶
-----------------------------------
350 Requested file action pending further information
對被請求文件的操作需要進一步更多的信息
-----------------------------------
421 Service not available, closing control connection.This may be a reply
to any command if the service knows it must shut down.
服務不可用,控制連接關閉。這可能是對任何命令的回應,如果服務認為它必須關閉
421 Too many users - please try again later.
太多用戶,那就過會再連
-----------------------------------
425 Can t open data connection.
打開數據連接失敗
-----------------------------------
426 Connection closed; transfer aborted.
連接關閉,傳送中止。
-----------------------------------
450 Requested file action not taken.
對被請求文件的操作未被執行
-----------------------------------
451 Requested action aborted. Local error in processing.
請求的操作中止。處理中發生本地錯誤。
-----------------------------------
452 Requested action not taken. Insufficient storage space in system.File
unavailable (e.g., file busy).
請求的操作沒有被執行。 系統存儲空間不足。 文件不可用
-----------------------------------
500 Syntax error, command unrecognized. This may include errors such as
command line too long.
語法錯誤,不可識別的命令。 這可能是命令行過長。
-----------------------------------
501 Syntax error in parameters or arguments.
參數錯誤導致的語法錯誤
-----------------------------------
502 Command not implemented.
命令未被執行
-----------------------------------
503 Bad sequence of commands.
命令的次序錯誤。
-----------------------------------
504 Command not implemented for that parameter.
由於參數錯誤,命令未被執行
-----------------------------------
530 Not logged in.
一般來說是密碼錯誤。
530 Sorry, no ANONYMOUS access allowed.
這個就是不許匿名登錄
530 Not logged in, unauthorized IP address
這個有點麻煩,你的IP不在站長允許訪問的IP范圍內,只有和站長聯系,讓他把你的IP網段加入Allow Access列表裡吧
530 Not logged in, only one(也有可能是two or three) session from same IP allowed at a time.
每個IP只能開一個(也有可能是two or three) 下載,就不要用多線程啦,小心Ban了你。
-----------------------------------
532 Need account for storing files.
存儲文件需要賬戶信息
-----------------------------------
550 Requested action not taken. File unavailable (e.g., file not found, no
access).
請求操作未被執行,文件不可用。
-----------------------------------
551 Requested action aborted. Page type unknown.
請求操作中止,頁面類型未知
-----------------------------------
552 Requested file action aborted. Exceeded storage allocation (for current
directory or dataset).
對請求文件的操作中止。 超出存儲分配
-----------------------------------
553 Requested action not taken. File name not allowed
請求操作未被執行。 文件名不允許
-----------------------------------
這種錯誤跟http協議類似,大致是:
2開頭--成功
3開頭--許可權問題
4開頭--文件問題
5開頭--伺服器問題
9. 怎麼樣建立FTP
建立個人FTP伺服器教程 以及 內網、區域網設置IP,建立FTP
【怎樣建立個人FTP】
Serv-U FTP Server 5.0.0.11 final 特別破解版漢化版
點擊下載
好了,說了這么多,還沒到關鍵部分-如何自己來建立FTP伺服器。下面我就一步一步來說明。
一、 安裝原版軟體和漢化補丁,這個過程就不多說了,想必沒人不會的。
二、 建立第一個本地FTP伺服器
安裝完成後程序會自動運行,你也可以在菜單中選擇運行。
1、 第一次運行程序,它會彈出設置向導窗口如圖,
將會帶你完成最初的設置,
2、 單擊「下一步」,出現「顯示菜單圖像」的窗口,問你是否在菜單中顯示小圖像,看各人喜歡了;
3、 單擊「下一步」,這個窗口是讓你在本地第一次運行FTP伺服器,只要「下一步」就行了。
4、 接下來要你輸入你的IP地址如圖,
如果你自己有伺服器,有固定的IP,那就請輸入IP地址,如果你只是在自己電腦上建立FTP,而且又是撥號用戶,有的只是動態IP,沒有固定IP,那這一步就省了,什麼也不要填,Serv-U 會自動確定你的IP地址,「下一步」;
5、 在這兒要你輸入你的域名,如圖
如果你有的話,如:ftp.abc.com,沒有的話,就隨便填一個;
6、 「下一步」,詢問你是否允許匿名訪問如圖
一般說來,匿名訪問是以Anonymous為用戶名稱登錄的,無需密碼,當然如果你想成立一個會員區什麼的,就應該選擇「否」,不讓隨便什麼人都可以登錄,只有許可用戶才行,在此我們填「是」;
7、 「下一步」,問你匿名用戶登錄到你的電腦時的目錄,如圖,
你可以自己指定一個硬碟上已存在的目錄,如F:\temp\xyz;
8、 「下一步」,詢問你是否要鎖定該目錄,鎖定後,匿名登錄的用戶將只能認為你所指定的目錄(F:\temp\xyz)是根目錄,也就是說他只能訪問這個目錄下的文件和文件夾,這個目錄之外就不能訪問,對於匿名用戶一般填「是」;
9、 「下一步」,詢問你是否創建命名的帳號,也就是說可以指定用戶以特定的帳號訪問你的FTP,這對於辦會員區可很有用哦,你可以對於每個人都創建一個帳號,每個帳號的許可權不同,就可以不同程序地限制每個人的權利,方法將在後面講到,這里選擇「是」;
10、 「下一步」,請你填入所要建立的帳號的名稱,如圖,如:ldr,
11、 「下一步」,請輸入密碼,如:123,
12、 「下一步」,詢問登錄目錄是什麼,這一步與第7步一樣,如:F:\temp
13、 「下一步」,詢問你是否要鎖定該目錄,同第8步,這里選擇「否」;
14、 接下來詢問你這次創建的用戶的管理員許可權,如圖,
有幾項選擇:無許可權,組管理員,域管理員,只讀管理員和系統管理員,每項的許可權各不相同;這里選擇「系統管理員」;
15、 最後一步,點擊「完成」就OK了,你有什麼需要修改的,可以點「上一步」,或者進入Serv-U管理員直接修改。至此,我們建立
了一個域ftp.abc.com,兩個用戶,一個Anonymous,一個ldr。
三、 既然我們已經建立好FTP伺服器,那麼我們就應該可以用FTP客戶端軟體來嘗試登錄。
怎麼辦呢?其實很簡單,我們不用上網,就可以測試。我們知道,不上網時,本地機的IP地址默認就為127.0.0.1,FTP埠號為21。打開FTP客戶端軟體,我就用FlashFXP來說明,打開快速連接,填入相應內容,如圖
然後連接,如圖
可以看到,我左邊窗格以Anonymous登錄,右邊窗格以ldr登錄,由於是本地機,所以速度奇快,上網後,假如我要讓你登錄到我的電腦上,我只要把我的上網時的IP地址給你,你就可以匿名訪問我的電腦了(注意不要開防火牆),是不是很方便?
四、Serv-U管理員中的各項設置
在設置完成後,將會進入Serv-U管理員的主界面,如圖
左邊窗格中顯示各個欄目,右邊窗格中顯示各個欄目的具體選項,下面就大概講一講設置內容。
1、 在圖中,我們可以人為地控制Serv-U引擎的運行或停止,記住,在Win 9x/Me 中,我們就要在此選擇「系統服務」,才會運行
Serv-U引擎。
2、 「許可」,如果你花美元買了注冊號,就可以在此輸入。
3、 「設置」,這個設置是對於「本地伺服器」來說的。「常規」設置中,如圖
可以限制伺服器的最大速度,可以攔截FXP(站點到站點傳送),也可以限制用戶的數量,這樣不至於你的伺服器被拖跨。「目錄緩存」設置中,如圖
允許你自己確定目錄列表的個數以及超時時間,在Windows 95 和 NT下,目錄列表默認設置為25,當緩存滿了之後,新的請求將替換老的請求。「高級」設置中,如圖
可以讓你自己定義伺服器、Socket、文件的上傳和下載的各項設置。
4、 「活動」,在這里記錄了用戶的活動日誌,已封鎖的IP的活動日誌,以及任務日誌;任務日誌中顯示的就是你開始停止的各項操作記錄,你可以點擊右擊,選擇一此過濾文本,使其只顯示你所想見的內容,如圖
5、 「域」,這里包含了你一開始根據向導所建立的用戶、設置、域等。「域--設置」中所設置的內容其實與第3步差不多,只是它更
加具體,可以對於每一個不同域定製。「域--活動」中記載了這個域下所有用戶的活動情況。
6、 「域--組」,我們可以自己建立一些便於管理的組,然後把一類的用戶歸到一個組中。
7、 「域--用戶」中,大家可以看到一開始我們建立的兩個帳號,一個Anonymous,一個ldr。現在就帳號ldr來對其中的細節設置說明一下。
A、「帳號」欄,如圖
對於一些不守規則的人,我們可以選擇「禁用帳號」,雖然有帳號,但可以使用戶一時間無法登錄;你也可以設置讓程序到達某個日期後自動刪除某個帳號;下面幾欄是這個帳號的基本信息,我們都可以在此更改,其中密碼改過後並不顯示,而是統一顯示<>,特別要注意選項「鎖定用戶於主目錄」,什麼意思呢?大家應該碰到,每次我們登錄到FTP伺服器上後,在根目錄下只顯示「/」,選擇這項選項後,就是這樣,如果不選,會出現什麼情況呢?你可以做一下試驗,在根目錄下將顯示「/f:/temp/」,也就是說顯示了你硬碟中的絕對
地址,這在某些情況下是很危險的,有不懷好意的高手,你就麻煩了!
你可以隱藏屬性為隱藏的文件,可以限制同一IP的登錄個數,是否允許用戶更改密碼(這需要客戶端軟體的支持),最大上傳下載的速
度,超時時間以及空閑時間,你也可以限制最大用戶數量,如20,說明同時只能有20個用戶登錄。
C、「目錄訪問」欄,如圖
在此你可以控制用戶對於文件目錄的許可權,對文件有讀取、寫入、刪除、追加、執行等操作,對於文件夾有列表、創建、刪除,以及是否繼承子目錄;如果覺得目錄不夠,你也可以添加可訪問的目錄。
D、「IP訪問」欄,如圖
在這里你可以規定某個IP是否可以訪問你的FTP伺服器,你可以拒絕它的訪問,只要填上相應的IP地址,以後由這個IP的訪問通通被攔下。
E、「上傳/下載率」欄,如圖
在這里你可以設置上傳和下載之間的比值,控制好上傳和下載之間的數據流量關系。
F、「配額」欄,如圖
這里你可以為每個FTP用戶設置磁碟空間,點擊「計算當前」,可以知道當前目前下的所有空間大小,在「最大」一欄中填入你想要限制的容量。
最後有一點,改過設置後一定要點擊右鍵,選擇「應用」使設置生效才行,否則一切都白做了!!
希望大家學會後,能為更多的人提供下載,享受寬頻帶來的快樂!
==========================================================================================================
SERV-U FTP的歡迎詞設置
讓你的SERV-U FTP看起來更專業一點
現在很多的朋友都用SERV-U做個人FTP的伺服器,有關如何使用SERV-U架設伺服器的文章很多了,這兒我就不多說了。不過大家不知道注意到了沒有,當你登陸很多FTP的時候,會顯示一些歡迎信息,比如說顯示你的IP,告訴你目前有多少人在使用FTP,帶寬是多少等等。。。看起來就比較的專業樣子。其實你自己也是可以做的,SERV-U這個軟體本身就有這個功能。下面我就說明以下如何在自己的FTP裡面加上這些信息。
第一、先建立一個文本文件,隨便取一個名字。我們這兒就取message.txt吧。
第二、這個這個文本文件裡面加上這些文字
-----------------------------------
歡迎來到XXX的個人FTP伺服器
你的IP地址是:%IP
目前伺服器所在的時間是 %time
已經有 %u24h 個用戶在最近24小時訪問過本FTP
本FTP伺服器已經運行了 %ServerDays 天,%ServerHours 小時 和 %ServerMins 分。
伺服器的運行情況:
所有登陸用戶數量: %loggedInAll total
當前登陸用戶數量: %Unow
已經下載位元組數: %ServerKbDown Kb
已經上傳位元組數: %ServerKbUp Kb
已經下載文件數: %ServerFilesDown
已經上傳文件數: %ServerFilesUp
伺服器平均帶寬: %ServerAvg Kb/sec
伺服器當前帶寬: %ServerKBps Kb/sec
------------------------------------
其中XXX可以改成你的名字
你也可以加上一些你自己認為喜歡的文字,不過要注意的是每行最好不要超過80個字元
其中以%開頭的都是一些變數,下面是SERV-U能支持的變數
時間和日期
%Time - 顯示你的計算機當前時間
%Date - 顯示你的計算機當前日期
伺服器的統計信息
%ServerDays - 顯示伺服器已經運行的天數
%ServerHours - 顯示伺服器已經運行的小時數
%ServerMins - 顯示伺服器已經運行的分鍾數
%ServerSecs - 顯示伺服器已經運行的秒數
%ServerKbUp - 顯示自從伺服器運行以來已經上傳的位元組數
%ServerKbDown - 顯示自從伺服器運行以來已經下載的位元組數
%ServerFilesUp - 顯示自從伺服器運行以來已經上傳的文件數
%ServerFilesDown - 顯示自從伺服器運行以來已經下載的文件數
%LoggedInAll - 顯示自從伺服器運行以來已經登陸的用戶數
%ServerAvg - 顯示伺服器的平均帶寬
%ServerKBps - 顯示伺服器的當前帶寬
伺服器的設定信息
%MaxUsers - 顯示伺服器能同時登陸的最大用戶數量
%MaxAnonymous - 顯示伺服器能同時登陸的最大匿名用戶數量
用戶信息
%Name - 顯示登陸的用戶名
%IP - 顯示登陸的用戶IP地址
%Dir - 顯示登陸的用戶的當前目錄
%Disk - 顯示登陸的用戶的當前磁碟
%DFree - 顯示登陸的用戶的當前磁碟空間,單位是MB
%FUp - 顯示登陸的用戶上傳的文件數量
%FDown - 顯示登陸的用戶下載的文件數量
%FTot - 顯示登陸的用戶上傳和下載的總的文件數量
%BUp - 顯示登陸的用戶上傳的位元組數,單位是KB
%Bdown - 顯示登陸的用戶下載的位元組數,單位是KB
%BTot - 顯示登陸的用戶上傳和下載的總位元組數,單位是KB
%TconM - 顯示登陸用戶連接時間,單位是分鍾
%TconS - 顯示登陸用戶連接時間,單位是秒,要和%TconM一起使用
%RatioUp - 顯示登陸用戶的上傳流量限制
%RatioDown - 顯示登陸用戶的下載流量限制
%RatioCredit - 顯示登陸用戶還有多少credit可以上傳和下載,這個是針對有些FTP是要上傳多少文件,才能下載多少文件而設置的
%QuotaUsed - 顯示登陸用戶的已經使用了多少空間,單位是KB
%QuotaLeft - 顯示登陸用戶的還有多少空間可以使用,單位是KB
%QuotaMax - 顯示登陸用戶的的最大空間,單位是KB
後面3個是針對有磁碟限制的用戶設置的
用戶數量
%UNow - 顯示當前有多少用戶連接
%UAll - 顯示從伺服器運行以來一共有多少用戶連接過
%U24h - 顯示最近24小時有多少用戶
%UAnonAll - 顯示當前總的匿名用戶數量
%UAnonThisIP - 顯示所有匿名登陸的用戶數
%UNonAnonAll - 顯示所有當前非匿名登陸用戶數
%UNonAnonThisIP - 顯示所有非匿名登陸用戶數
%UThisName - 顯示所有使用這個名字登陸的用戶數
自己在先建立一個.txt文件,輸入你想要顯示的文字,具體參數看上面的內容,然後在Serv_u內的server設置裡面,加入這個.txt文件就可以了
==========================================================================================================
——常見FTP登陸Log信息——
常見FTP登陸Log信息
1.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER anonymous
530 Sorry, no ANONYMOUS access allowed.
QUIT
這個就是不許匿名登錄啦
2.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER test
331 User name okay, need password.
PASS xxxxxx
530 Not logged in.
QUIT
一般是密碼輸入錯誤時出現的信息,但對於Serv-U來說,如果沒有這個帳號(test)存在,也會產生同樣的出錯信息。
3.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
ERROR: Connection timed out
這個表明對方未開機,也可能是對方不在你能訪問的范圍內
4.
Connecting to xxx.xxx.xxx.xxx Port 21 (#1)
ERROR: Connection refused
這個一般表明對方已開機,但未開啟FTP服務(沒有開Serv-U)
也可能為對方不提供在這個埠上的服務
5.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
Connected. Waiting for response.
Disconnected from server.
Connection attempt failed. Waiting for retry...
出現這個信息實在是很倒霉,你極有可能被對方Ban了。
如果只是Ban幾分鍾or幾小時or一天還好,不然只有和站長說說好話,讓他給你解封吧。
6.
Connecting to xxx.xxx.xxx.xxx, Port 21 (#1)
Connected. Waiting for response.
USER XXX
331 User name okay, need password
PASS xxxxxx
530 Not logged in, unauthorized IP address.
QUIT
這個有點麻煩,你的IP不在站長允許訪問的IP范圍內,只有和站長聯系,讓他把你的IP網段加入Allow Access列表裡吧
7.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER user
421 Too many users - please try again later.
哈哈,這個很常見吧,用戶太多
8.
Connected. Waiting for response.
220 Serv-U FTP Server v4.0 for WinSock ready...
USER test
530 Not logged in, only one session from same IP allowed at a time.
QUIT
每個IP只能開一個下載,就不要用多線程啦,小心Ban了你。
----------------------------------------------------------------------------------------------
內網、區域網如何設置IP,建立FTP
首先,我們知道動態IP機器出去的最大問題是IP,因為動態IP機器的IP外網是無法識別的,我們討論的是最普通的區域網內工作站出去做FTP和WEB站點的問題!
動態域名解析正好能夠解決此類問題,它的原理是將本機的動態IP自動映射到預先申請好的虛擬域名上,這樣外面就可以通過訪問固定的虛擬域名來訪問到動態IP機器了。
<花生殼>該軟體使用方便,幾乎不用動什麼腦筋,唯一要做的事情就是去注冊,然後申請一個以vicp.net為後綴虛擬域名。
1.進入http://www.oray.net/,下載<花生殼>,並「注冊網域護照」!
2.注冊完成後,登陸「我的控制台」
3.進入「我的控制台」,點擊左下角的『我要.激活花生殼服務』
4.點擊「開始」進入
在『免費域名』填入不重復的你想要得名字就是你將來的域名,例如:AGHU
5.以後就是「服務條款」和「填寫站點信息」,這些地球人都知道怎麼填!
填完結束,恭喜你,你的域名已經有了!例如:你以後的域名就是AGHU.VICP.NET
申請完免費域名以後,就安裝你已經下載的<花生殼>,然後打開運行
輸入你的注冊名和密碼,等一下就會激活你的域名,興奮吧!
然後你的ftp和web就可以啟動咯!
架設ftp伺服器的事情,另外有帖子詳細介紹了!!
======================================
區域網內公開的ip只有一個,除非你是在主機上建私服,否則你無法公開你的私服,只能在區域網內,解決的辦法如下。
由於公網ip地址有限,不少isp都採用多個內網用戶通過代理和網關路由共用一個公網ip上internet的方法,這樣就限制了這些用戶在自己計算機上架設個人網站。要實現對我們來說是比較困難的,首先得得到系統管理員的支持才能夠實現。因為這一切的設置必須在代理伺服器上做的。要實現這一點,可以用windows 2000 服務者 的埠映射功能,除此之外winroute pro也具有這樣的功能,還有各種企業級的防火牆。而對於我們這些普通用戶,恐怕還是用windows 2000 的轉換以解決ip地址匱乏問題。在防火牆上實現nat後,可以隱藏受保護網路的內部拓撲結構,在一定程度上提高網路的安全性。如果反向nat提供動態網路地址及埠轉換功能,還可以實現負載均衡等功能埠映射功能可以讓內部網路中某台機器對外部提供www服務。 埠映射功能還可以完成一些特定代理功能,比如代理pop,smtp,telnet等協議。理論上可以提供六萬多個埠的映射,恐怕我們永遠都用不完的。
一、下面來介紹一下通過nat共享上網和利用nat來實現埠映射。
1、在windows 2000 server上,從管理工具中進入「路由和遠程訪問」(routing 並且 遙遠 access)服務,在伺服器上滑鼠右擊,-》「配置並啟用路由和遠程訪問」
2、點「下一步」
3、選「internet連接伺服器」,讓內網主機可以通過這台伺服器訪問internet.(最好先配置好nat共享,讓內網主機可以正常上網,不然的話,配好埠映射後再來配置nat共享就有點麻煩了,弄的不好nat還共享不了。)
4、選「設置有網路地址轉換(nat)路由協議的路由器」,不要選「設置internet連接共享(ics)」.(ics與nat的區別在於使用的容易程度上,為了啟用ics,只需要選擇一個復選框就可以了,而為了啟用nat,則需要更多的配置任務,此外,ics用於小型網路上的原因還在於:針對內部主機,它需要有一個固定的ip地址范圍;針對與外部網路的通信,它被限制在單個公共ip地址上;它只允許單個內部網路介面。)
5、先在此說一下我的網路情況:internet連接192.200.200.3(也是個內部地址,沒辦法,鐵通的網路不太好,網速不快,價錢又貴,我的命真苦啊)宿舍內連接192.168.0.1(宿舍里連有區域網,共4台電腦,其中一台上裝了sambar 5.1b5做的web伺服器,web埠是80,待會就從外網(用192.200.200.55來替代)來訪問這個192.168.0.2:80上的網頁)這台nat主機上開通了iis5.0,埠是80,用埠映射的辦法把8081埠映射到內部主機192.168.0.2的80埠上。
6、在「路由和遠程訪問伺服器安裝向導」中選「internet連接」(就是連向internet的那個連接),點「下一步」。
7、選「完成」 到此為止,nat共享設置也就完成了,內部的主機也能上網了。內部主機的網路設置如下:
ip地址范圍是912.168.0.2~192.168.0.254,子網掩碼為255.255.255.0,網關為192.168.0.1,dns為isp給的地址,我們的是211.98.xxx.xxx
二、利用nat來映射埠
1、添加nat協議。右擊「常規」,-》「新路由選擇協議」
2、在「新路由選擇協議」中選擇「網路地址轉換(nat)」,點擊「確定」
3、這樣在「ip路由選擇」中就多了一項「網路地址轉換(nat)」
4、右擊「網路地址轉換(nat)」,添加「新介面」
5、在「網路地址轉換(nat)的新介面」中選擇「internet連接」(也就是連向internet的那個連接,可不要選錯咯)
6、在「網路地址轉換-internet連接屬性」中選中「公用介面連接到internet」,復選「轉換tcp/udp頭(推薦)」
7、在「地址池「選項表裡添加你需要提供埠重定向的起始地址與結束地址.(也就是你要拿出來搞埠映射的所有ip地址,一般情況下我們就一個ip地址,所以可以不用「地址池」不同之處後面再講。
8、在「特殊埠「選項表裡提供了你需要定向的數據連接協議(是tcp還是udp協議,如web和ftp就是tcp協議的),選准後「添加」
9、「添加特殊埠」,這里就是設置埠映射的核心了,把 nat 主機的哪個埠映射到內網主機的哪個埠就在這里設置,由於設有「地址池」,所以可以在「公網地址」中添上「地址池」中的任一地址,這里添的是「192.200.200.3
這就是tcp協議埠的重定向,至於udp的定向頁差不多,下圖就是添加埠映射後的情況。
四、測試結果
在192.200.200.55出測試了一下nat主機上的web伺服器和內網中192.168.0.2上建的web伺服器,得出結果如下:(不好意思,中間改過一下埠號,192.200.200.3上的8081埠映射到192.168.0.2的80埠)
===================================
關於serv-u的下載和安裝,配置
花生殼域名解析的申請(看本版其他帖子)
假設所有條件完備:
主機192.168.0.1
子機192.168.0.6
要在子機上建立域名為user.vicp.net的ftp
第一步:子機serv-u的配置
和主機建立沒有區別,
建立用戶user
密碼user
埠請設為21
(如果主機上還有ftp,那麼你最好用其它埠,比如2100等)
說明:子機用埠最好是21,其它埠不穩定。易出問題。
第二步:主機的埠映射
到射手網或其它網站下載Port tunnel這個軟體,免費的
(時間緊迫,沒有找給大家,抱歉)
在主機 上安裝好port tunnel,運行
界面相當簡潔
點擊」增加「按鈕
出現新建屬性頁
給映射起個名字」新建映射「
有4項設置關鍵
輸入埠:21(前提是區域網中沒有人用21這個埠,如果主機或其它子機有ftp,埠一定要設為不同)
捆綁地址:(選默認值)非確定(0.0.0.0)
輸出埠:21(一定要和輸入埠?/ca>
10. 什麼是FTP ,Linux的介紹
什麼是FTP呢?FTP 是 TCP/IP 協議組中的協議之一,是英文File Transfer Protocol的縮寫。該協議是Internet文件傳送的基礎,它由一系列規格說明文檔組成,目標是提高文件的共享性,提供非直接使用遠程計算機,使存儲介質對用戶透明和可靠高效地傳送數據。簡單的說,FTP就是完成兩台計算機之間的拷貝,從遠程計算機拷貝文件至自己的計算機上,稱之為「下載(download)」文件。若將文件從自己計算機中拷貝至遠程計算機上,則稱之為「上載(upload)」文件。在TCP/IP協議中,FTP標准命令TCP埠號為21,Port方式數據埠為20。FTP協議的任務是從一台計算機將文件傳送到另一台計算機,它與這兩台計算機所處的位置、聯接的方式、甚至是是否使用相同的操作系統無關。假設兩台計算機通過ftp協議對話,並且能訪問Internet, 你可以用ftp命令來傳輸文件。每種操作系統使用上有某一些細微差別,但是每種協議基本的命令結構是相同的。
FTP的傳輸有兩種方式:ASCII傳輸模式和二進制數據傳輸模式。
1.ASCII傳輸方式:假定用戶正在拷貝的文件包含的簡單ASCII碼文本,如果在遠程機器上運行的不是UNIX,當文件傳輸時ftp通常會自動地調整文件的內容以便於把文件解釋成另外那台計算機存儲文本文件的格式。
但是常常有這樣的情況,用戶正在傳輸的文件包含的不是文本文件,它們可能是程序,資料庫,字處理文件或者壓縮文件(盡管字處理文件包含的大部分是文本,其中也包含有指示頁尺寸,字型檔等信息的非列印字元)。在拷貝任何非文本文件之前,用binary 命令告訴ftp逐字拷貝,不要對這些文件進行處理,這也是下面要講的二進制傳輸。
2.二進制傳輸模式:在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應的。即使目的地機器上包含位序列的文件是沒意義的。例如,macintosh以二進制方式傳送可執行文件到Windows系統,在對方系統上,此文件不能執行。
如果你在ASCII方式下傳輸二進制文件,即使不需要也仍會轉譯。這會使傳輸稍微變慢 ,也會損壞數據,使文件變得不能用。(在大多數計算機上,ASCII方式一般假設每一字元的第一有效位無意義,因為ASCII字元組合不使用它。如果你傳輸二進制文件,所有的位都是重要的。)如果你知道這兩台機器是同樣的,則二進制方式對文本文件和數據文件都是有效的。
5. FTP的工作方式
FTP支持兩種模式,一種方式叫做Standard (也就是 PORT方式,主動方式),一種是 Passive (也就是PASV,被動方式)。 Standard模式 FTP的客戶端發送 PORT 命令到FTP伺服器。Passive模式FTP的客戶端發送 PASV命令到 FTP Server。
下面介紹一個這兩種方式的工作原理:
Port模式FTP 客戶端首先和FTP伺服器的TCP 21埠建立連接,通過這個通道發送命令,客戶端需要接收數據的時候在這個通道上發送PORT命令。 PORT命令包含了客戶端用什麼埠接收數據。在傳送數據的時候,伺服器端通過自己的TCP 20埠連接至客戶端的指定埠發送數據。 FTP server必須和客戶端建立一個新的連接用來傳送數據。
Passive模式在建立控制通道的時候和Standard模式類似,但建立連接後發送的不是Port命令,而是Pasv命令。FTP伺服器收到Pasv命令後,隨機打開一個高端埠(埠號大於1024)並且通知客戶端在這個埠上傳送數據的請求,客戶端連接FTP伺服器此埠,然後FTP伺服器將通過這個埠進行數據的傳送,這個時候FTP server不再需要建立一個新的和客戶端之間的連接。
很多防火牆在設置的時候都是不允許接受外部發起的連接的,所以許多位於防火牆後或內網的FTP伺服器不支持PASV模式,因為客戶端無法穿過防火牆打開FTP伺服器的高端埠;而許多內網的客戶端不能用PORT模式登陸FTP伺服器,因為從伺服器的TCP 20無法和內部網路的客戶端建立一個新的連接,造成無法工作。
單的說,Linux是Unix克隆(Unix clone)或Unix風格(Unix alike)
的操作系統(OS),在原代碼級上兼容絕大部分Unix標准(指的是IEEE
POSIX,System V,BSD),是一個支持多用戶, 多進程,多線程,實時性
較好的功能
強大而穩定的操作系統.它可以運行在x86 PC,Sun Sparc,Digital Alpha
,680x0,PowerPC, MIPS等平台上,可
以說Linux是目前運行硬體平台最多的操作系統. Linux最大的特點在於
它是GNU(Gnu's Not Unix----有點分形與混沌的意味----無限自包含,
簡單的說GNU是一種自由軟體體系)的一員,遵循公共版權許可證(GPL),秉承
"自由的思想,開放的源碼"的原則,成千上萬的專家/愛好者通過Internet
在不斷地完善並維護它,可以說Linux是計算機愛好者自己的操作系統.
追述Linux的歷史直到1990年,Linus Torvalds還是芬蘭赫爾辛基大
學的一名學生,最初是用匯編語言寫了一個在80386保護模式下處理
多任務切換的程序,後來從Minix(Andy Tanenbaum教授所寫的很小
的Unix操作系統,主要用於操作系統教學)得到靈感,進一步產生了
自認為狂妄的想法----寫一個比Minix更好的Minix,於是開始寫了
一些硬體的設備驅動程序,一個小的文件系統,......,這樣0.0.1
版本的Linux就出來了,但是它只具有操作系統內核的勉強的雛形,
甚至不能運行,你必須在有Minix的機器上編譯以後才能玩.這時候
Linus已經完全著迷而不想停止,決定踢開Minix,於是在1991年10
月5號發布Linux 0.0.2版本,在這個版本中已經可以運行bash
(the GNU Bourne Again Shell----一種用戶與操作系統內核通訊的軟體)
和gcc(GNU C 編譯器).從一開始,Linus就決定自由擴散Linux,包括原代碼,
他在comp.os.minix新聞討論組里發布Linux 0.0.2時寫到:
"Do you pine for nice days of Minix-1.1, when mem were men
and wrote their own device drivers? Are you without a nice
project and just dying to cut your teeth on a OS you can
try to modify for your needs? Are you finding it frustrsting
when everything works on Minix? No more all-nighters to
get a nifty program working? Then this post might be just
for you.
"As I mentioned a month ago, I'm working on a free version
of a Minix-lookalike for AT-386 computers. It has finally
reached the stage where it's even usable(though may not be
depending on what you want),and I am willing to put out
the sources for wider distribution. It is just version
0.0.2 ... but I've successfully run bash,gcc,gnu-make,
gnu-sed,compress,etc.under it."
隨即Linux引起黑客們(hacker)的注意,通過計算機網路加入了Linux的
內核開發,Linux傾向於成為一個黑客的系統----直到今天,在Linux社區
里內核的開發被認為是真正的編程.由於一批高水平黑客的加入,使Linux
發展迅猛,到1993年底94年初,Linux 1.0終於誕生了! Linux 1.0已經是一
個功能完備的操作系統,而且內核寫得緊湊高效,可以充分發揮硬體的性能,
在4M內存的80386機器上也表現得非常好,至今人們還在津津樂道於此,
不過自從2.1.xx系列的內核Linux開始走高端的路子----硬體的發展太快了,
但是Linux不會失去它的本色.Linux具有良好的兼容性和可移植性,大約在
1.3版本之後,開始向其他硬體平台上移植,包括弧稱最快的CPU---Digital
Alpha(至少目前主頻是最高的).所以不要總把Linux與低檔硬體平台聯系
到一塊,Linux發展到今天,這是一個誤區,它只是將硬體的性能充分發揮
出來而已,Linux必將從低端應用橫掃到高端應用!
在Linux的發展歷程上還有一件重要的事:Linux加入GNU並遵循公共
版權許可證(GPL).此舉大大加強了GNU和Linux,幾乎所有應用的GNU
庫/軟體都移植到Linux,完善並提高了Linux的實用性,而GNU有了一
個根基,我現在也搞不清楚到底是GNU Linux呢還是基於Linux的GNU.
:-) 更重要的是遵循公共版權許可證,在繼承自由軟體的精神的前
提下,不再排斥對自由軟體的商業行為(如把自由軟體打包以光碟形
式出售),不排斥商家對自由軟體進一步開發,不排斥在Linux上開發
商業軟體.從此Linux又開始了一次飛躍,出現了很多的Linux發行版
,如Slackware,Redhat,Suse,TurboLinux,OpenLinux等十多種,而且
還在增加,注意你不能說"Redhat Linux""Suse Linux""Slackware
Linux"等等,Linux主要指操作系統內核,對所有發行版內核原代碼
都是一樣的(但集成的內核版本可能因發行時間不同而有所不同).
還有一些公司在Linux上開發商業軟體或把其他Unix平台的軟體移
植到Linux上來,如今很多IT業界的大腕如IBM,Intel,Oracle,Infomix
,Sysbase,Corel,Netscape,CA,Novell等都宣布支持Linux! 商家的
加盟彌補了純自由軟體的不足和發展障礙,Linux迅速普及到廣大計
算機愛好者,並且進入商業應用,正是打破某些公司壟斷文化圈的希
望所在!!
Linux是愛好者們通過Internet協同開發出來的,當然它的網路功能十
分強大,比如你可以通過ftp,nfs等來安裝Linux,用它來做網關等等.
隨著Linux的發展衍生出來的應用恐怕出乎Linus本人最初的預料,
如有人用它來做路由器,有人來做嵌入式系統,有人來做實時性系統.
.....常有新手問Linux能做什麼,其實它不象那些中看不中用的操作
系統,不在於你用它能幹什麼,而在於你想干什麼!
Linux的興起還給人們很多啟迪與思考,如集市式軟體開發的討論,
又如自由軟體的精神......
.
參考資料:http://..com/question/3596242.html
