當前位置:首頁 » 文件管理 » cftp庫

cftp庫

發布時間: 2023-08-30 02:34:38

c語言如何用ftpPutFile()函數上傳文件到Ftp伺服器!下載用FtpGetFile()可以!

  1. 先後使用InternetOpen和InternetConnect打開連接。
  2. 使用CreateFile函數打開本地文件。
  3. 使用FtpOpenFile函數打開遠程文件。
  4. 分別使用InternetReadFile和ReadFile函數讀取 FTP 或本地文件。
  5. 分別使用InternetWriteFile和WriteFile函數寫入 FTP 或本地文件。
  6. 使用CloseHandle函數關閉本地文件句柄。
  7. 使用InternetCloseHandle函數關閉 FTP 文件句柄。

Ⅱ 什麼是FTP和HTTP

分類: 電腦/網路 >> 互聯網
問題描述:

什麼是FTP和HTTP

解析:

FTP(File Transfer Protocol,文件傳輸協議是Inter上使用非常廣泛的一種通訊協議,它是為Inter用戶進行文件傳輸(包括文件的上傳和下載)而制定的。要想實現FTP文件傳輸,必須在相連的兩端都裝有支持FTP協議的軟體,裝在您的電腦上的叫FTP客戶端軟體,裝在另一端伺服器上的叫做FTP伺服器端軟體。

客戶端FTP軟體使用方法很簡單,啟動後首先要與遠程主機建立連接,然後向遠程主機發出傳輸命令,遠程主機在缺碧仔收到命令後就給予響應,並執行正確的命令。目前Windows系統中最常用的FTP軟體是CUTEFTP。FTP有一個根本的限制,那就是,如果用戶在某個主機上沒有注冊獲得授權,即沒有用戶名和口令,就不能與該主機進行文件傳輸。但匿名FTP伺服器除外,它允許用戶以anonymous作為用戶名,以Email地址作密碼來登錄,從而使用戶獲得免費資源。

====================================

WWW的核心——HTTP協議

眾所周知,Inter的基本協議是TCP/IP協議,目前廣泛採用的FTP、ArchieGopher等是建立在TCP/IP協議之上的應用層協議,不同的協議對應著不同的應用。

WWW伺服器使用的主要協議是HTTP協議,即超文體傳輸協議。由於HTTP協議支持的服務不限於WWW,還可以是其它服務,因而HTTP協議允許用戶在統一的界面下,採用不同的協議訪問不同的服務,如FTP、Archie、SMTP、NNTP等。另外,HTTP協議還可用於名字伺服器和分布式對象管理。

2.1 HTTP協議簡介

HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分布式超媒體信息系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規范化工作正在進行之中,而且HTTP-NG(NextGenerationofHTTP)的建議已經提出。

HTTP協議的主要特點可概括如下:

1.支持客戶/伺服器模式。

2.簡單快速:客戶向伺服器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與伺服器聯系的類型不同。

由於HTTP協議簡單,使伏汪得HTTP伺服器的程序規模小慧型,因而通信速度很快。

3.靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。

4.無連接:無連接的含義是限制每次連接只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。

5.無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在伺服器不需要先前信息時它的應答就較快。

2.2 HTTP協議的幾個重要概念

1.連接(Connection):一個傳輸層的實際環流,它是建立在兩個相互通訊的應用程序之間。

2.消息(Message):HTTP通訊的基本單位,包括一個結構化的八元組序列並通過連接傳輸。

3.請求(Request):一個從客戶端到伺服器的請求信息包括應用於資源的方法、資源的標識符和協議的版本號

4.響應(Response):一個從伺服器返回的信息包括HTTP協議的版本號、請求的狀態(例如「成功」或「沒找到」)和文檔的MIME類型。

5.資源(Resource):由URI標識的網路數據對象或服務。

6.實體(Entity):數據資源或來自服務資源的回映的一種特殊表示方法,它可能被包圍在一個請求或響應信息中。一個實體包括實體頭信息和實體的本身內容。

7.客戶機(Client):一個為發送請求目的而建立連接的應用程序。

8.用戶代理(Useragent):初始化一個請求的客戶機。它們是瀏覽器、編輯器或其它用戶工具。

9.伺服器(Server):一個接受連接並對請求返回信息的應用程序。

10.源伺服器(Originserver):是一個給定資源可以在其上駐留或被創建的伺服器。

11.代理(Proxy):一個中間程序,它可以充當一個伺服器,也可以充當一個客戶機,為其它客戶機建立請求。請求是通過可能的翻譯在內部或經過傳遞到其它的伺服器中。一個代理在發送請求信息之前,必須解釋並且如果可能重寫它。

代理經常作為通過防火牆的客戶機端的門戶,代理還可以作為一個幫助應用來通過協議處理沒有被用戶代理完成的請求。

12.網關(Gateway):一個作為其它伺服器中間媒介的伺服器。與代理不同的是,網關接受請求就好象對被請求的資源來說它就是源伺服器;發出請求的客戶機並沒有意識到它在同網關打交道。

網關經常作為通過防火牆的伺服器端的門戶,網關還可以作為一個協議翻譯器以便存取那些存儲在非HTTP系統中的資源。

13.通道(Tunnel):是作為兩個連接中繼的中介程序。一旦激活,通道便被認為不屬於HTTP通訊,盡管通道可能是被一個HTTP請求初始化的。當被中繼的連接兩端關閉時,通道便消失。當一個門戶(Portal)必須存在或中介(Intermediary)不能解釋中繼的通訊時通道被經常使用。

14.緩存(Cache):反應信息的局域存儲。

2.3 HTTP協議的運作方式

HTTP協議是基於請求/響應範式的。一個客戶機與伺服器建立連接後,發送一個請求給伺服器,請求方式的格式為,統一資源標識符、協議版本號,後邊是MIME信息包括請求修飾符、客戶機信息和可能的內容。伺服器接到請求後,給予相應的響應信息,其格式為一個狀態行包括信息的協議版本號、一個成功或錯誤的代碼,後邊是MIME信息包括伺服器信息、實體信息和可能的內容。

許多HTTP通訊是由一個用戶代理初始化的並且包括一個申請在源伺服器上資源的請求。最簡單的情況可能是在用戶代理(UA)和源伺服器(O)之間通過一個單獨的連接來完成(見圖2-1)。

圖2-1

當一個或多個中介出現在請求/響應鏈中時,情況就變得復雜一些。中介由三種:代理(Proxy)、網關(Gateway)和通道(Tunnel)。一個代理根據URI的絕對格式來接受請求,重寫全部或部分消息,通過URI的標識把已格式化過的請求發送到伺服器。網關是一個接收代理,作為一些其它伺服器的上層,並且如果必須的話,可以把請求翻譯給下層的伺服器協議。一個通道作為不改變消息的兩個連接之間的中繼點。當通訊需要通過一個中介(例如:防火牆等)或者是中介不能識別消息的內容時,通道經常被使用。圖2-2

上面的圖2-2表明了在用戶代理(UA)和源伺服器(O)之間有三個中介(A,B和C)。一個通過整個鏈的請求或響應消息必須經過四個連接段。這個區別是重要的,因為一些HTTP通訊選擇可能應用於最近的連接、沒有通道的鄰居,應用於鏈的終點或應用於沿鏈的所有連接。盡管圖2-2是線性的,每個參與者都可能從事多重的、並發的通訊。例如,B可能從許多客戶機接收請求而不通過A,並且/或者不通過C把請求送到A,在同時它還可能處理A的請求。

任何針對不作為通道的匯聚可能為處理請求啟用一個內部緩存。緩存的效果是請求/響應鏈被縮短,條件是沿鏈的參與者之一具有一個緩存的響應作用於那個請求。下圖說明結果鏈,其條件是針對一個未被UA或A加緩存的請求,B有一個經過C來自O的一個前期響應的緩存拷貝。

圖2-3

在Inter上,HTTP通訊通常發生在TCP/IP連接之上。預設埠是TCP80,但其它的埠也是可用的。但這並不預示著HTTP協議在Inter或其它網路的其它協議之上才能完成。HTTP只預示著一個可靠的傳輸。

以上簡要介紹了HTTP協議的宏觀運作方式,下面介紹一下HTTP協議的內部操作過程。

首先,簡單介紹基於HTTP協議的客戶/伺服器模式的信息交換過程,如圖2-4所示,它分四個過程,建立連接、發送請求信息、發送響應信息、關閉連接。

圖2-4

在WWW中,「客戶」與「伺服器」是一個相對的概念,只存在於一個特定的連接期間,即在某個連接中的客戶在另一個連接中可能作為伺服器。WWW伺服器運行時,一直在TCP80埠(WWW的預設埠)監聽,等待連接的出現。

下面,討論HTTP協議下客戶/伺服器模式中信息交換的實現。 1.建立連接 連接的建立是通過申請套接字(Socket)實現的。客戶打開一個套接字並把它約束在一個埠上,如果成功,就相當於建立了一個虛擬文件。以後就可以在該虛擬文件上寫數據並通過網路向外傳送。

2.發送請求

打開一個連接後,客戶機把請求消息送到伺服器的停留埠上,完成提出請求動作。

HTTP/1.0 請求消息的格式為:

請求消息=請求行(通用信息|請求頭|實體頭)CRLF[實體內容]

請求 行=方法 請求URL HTTP版本號 CRLF

方 法=GET|HEAD|POST|擴展方法

U R L=協議名稱+宿主名+目錄與文件名

請求行中的方法描述指定資源中應該執行的動作,常用的方法有GET、HEAD和POST。不同的請求對象對應GET的結果是不同的,對應關系如下:

對象 GET的結果

文件 文件的內容

程序 該程序的執行結果

資料庫查詢 查詢結果

HEAD——要求伺服器查找某對象的元信息,而不是對象本身。

POST——從客戶機向伺服器傳送數據,在要求伺服器和CGI做進一步處理時會用到POST方法。POST主要用於發送HTML文本中FORM的內容,讓CGI程序處理。

一個請求的例子為:

GETneorking.zju.e/zju/indexHTTP/1.0

頭信息又稱為元信息,即信息的信息,利用元信息可以實現有條件的請求或應答。

請求頭——告訴伺服器怎樣解釋本次請求,主要包括用戶可以接受的數據類型、壓縮方法和語言等。

實體頭——實體信息類型、長度、壓縮方法、最後一次修改時間、數據有效期等。

實體——請求或應答對象本身。

3.發送響應

伺服器在處理完客戶的請求之後,要向客戶機發送響應消息。

HTTP/1.0的響應消息格式如下:

響應消息=狀態行(通用信息頭|響應頭|實體頭) CRLF 〔實體內容〕

狀態行=HTTP版本號 狀態碼 原因敘述

狀態碼表示響應類型

1×× 保留

2×× 表示請求成功地接收

3×× 為完成請求客戶需進一步細化請求

4×× 客戶錯誤

5×× 伺服器錯誤

響應頭的信息包括:服務程序名,通知客戶請求的URL需要認證,請求的資源何時能使用。

4.關閉連接

客戶和伺服器雙方都可以通過關閉套接字來結束TCP/IP對話

Ⅲ 在哪裡可以找到C語言標准庫的實現源代碼

linux下的glic庫的源碼鏈接:
http://ftp.gnu.org/gnu/glibc/,你可以下載最新版本的glibc-2.24.tar.gz這個壓縮文件,在Windows系統下直接用WinRAR解壓即可,如果在Linux系統下用命令行解壓的話,命令如下:tar -xzvf glibc-2.24.tar.gz。

Ⅳ C/C++ 有類似python的pandas的第三方庫嗎

Python擁有一個強大的標准庫。Python語言的核心只包含數字、字元串、列表、字典、文件等常見類型和函數,而由Python標准庫提供了系統管理、網路通信、文本處理、資料庫介面、圖形系統、XML處理等額外的功能。
Python標准庫的主要功能有:
1.文本處理,包含文本格式化、正則表達式匹配、文本差異計算與合並、Unicode支持,二進制數據處理等功能
2.文件處理,包含文件操作、創建臨時文件、文件壓縮與歸檔、操作配置文件等功能
3.操作系統功能,包含線程與進程支持、IO復用、日期與時間處理、調用系統函數、日誌(logging)等功能
4.網路通信,包含網路套接字,SSL加密通信、非同步網路通信等功能
5.網路協議,支持HTTP,FTP,SMTP,POP,IMAP,NNTP,XMLRPC等多種網路協議,並提供了編寫網路伺服器的框架
6.W3C格式支持,包含HTML,SGML,XML的處理。
7.其它功能,包括國際化支持、數學運算、HASH、Tkinter等

Python社區提供了大量的第三方模塊,使用方式與標准庫類似。它們的功能覆蓋科學計算、Web開發、資料庫介面、圖形系統多個領域。第三方模塊可以使用Python或者C語言編寫。SWIG,SIP常用於將C語言編寫的程序庫轉化為Python模塊。Boost C++ Libraries包含了一組函式庫,Boost.Python,使得以Python或C++編寫的程式能互相調用。Python常被用做其他語言與工具之間的「膠水」語言。
著名第三方庫
1.Web框架
Django: 開源Web開發框架,它鼓勵快速開發,並遵循MVC設計,開發周期短。
ActiveGrid: 企業級的Web2.0解決方案。
Karrigell: 簡單的Web框架,自身包含了Web服務,py腳本引擎和純python的資料庫PyDBLite。
Tornado: 一個輕量級的Web框架,內置非阻塞式伺服器,而且速度相當快
webpy: 一個小巧靈活的Web框架,雖然簡單但是功能強大。
CherryPy: 基於Python的Web應用程序開發框架。
Pylons: 基於Python的一個極其高效和可靠的Web開發框架。
Zope: 開源的Web應用伺服器。
TurboGears: 基於Python的MVC風格的Web應用程序框架。
Twisted: 流行的網路編程庫,大型Web框架。
Quixote: Web開發框架。

2.科學計算
Matplotlib: 用Python實現的類matlab的第三方庫,用以繪制一些高質量的數學二維圖形。
SciPy: 基於Python的matlab實現,旨在實現matlab的所有功能。
NumPy: 基於Python的科學計算第三方庫,提供了矩陣,線性代數,傅立葉變換等等的解決方案。

3.GUI
PyGtk: 基於Python的GUI程序開發GTK+庫。
PyQt: 用於Python的QT開發庫。
WxPython: Python下的GUI編程框架,與MFC的架構相似。

4.其它
BeautifulSoup: 基於Python的HTML/XML解析器,簡單易用。
PIL: 基於Python的圖像處理庫,功能強大,對圖形文件的格式支持廣泛。
PyGame: 基於Python的多媒體開發和游戲軟體開發模塊。
Py2exe: 將python腳本轉換為windows上可以獨立運行的可執行程序。

參考自維基網路

Ⅳ C# 獲取Ftp某個目錄下的所有文件(不要文件夾)

我在之前做過一個FTP的客戶端工具。
drw 文件夾
-rw 文件(有擴展名或無擴展名)
我是根據服務端返回的報文進行分析獲取的列表。
給你一些代碼片段:
/// <summary>
/// 獲取指定目錄下的文件和文件夾。
/// </summary>
/// <param name="path">要獲取的目錄</param>
/// <param name="WRMethods">要發送到FTP伺服器的密令。</param>
/// <returns></returns>
public string[] GetFileList(string path, string WRMethods)//從ftp伺服器上獲得文件列表
{
WebResponse response;
string[] downloadFiles;
int conut = 4;
StringBuilder result = new StringBuilder();
Connect(path);
if (FTPVariable.IsUseProxy_ftp)
{
reqFTP.Proxy = FtpProxy.GetFtpSelectProxy(FTPVariable.FtpCommand_transferProxyName);
}
reqFTP.ReadWriteTimeout = 12000;
//如果不應銷毀到伺服器的連接,則為 true;否則為 false。默認值為 true。
//
reqFTP.Method = WRMethods;
try
{
response = (FtpWebResponse)reqFTP.GetResponse();
goto Ftp_lbl_03;
}
catch (WebException webex)
{
GetReply(webex.Message);
if (ReplyCode == 530)// 未登錄。
{
goto Ftp_lbl_04;
}
else if (ReplyCode == 550)
{
goto Ftp_lbl_04;
}
else
{
FtpManage.SetLog("獲取列表超時,等候1秒後重試!");
goto Ftp_lbl_01;
}
}
Ftp_lbl_01:
try
{
FtpManage.SetLog("正在連接伺服器 " + FtpRemoteHost);
response = GetRequest(path, WRMethods);
}
catch (WebException)
{
FtpManage.SetLog("獲取列表超時,等候1秒後重試!");
downloadFiles = null;
System.Threading.Thread.Sleep(1000);
if (conut == 0)
{
goto Ftp_lbl_02;
}
conut--;
goto Ftp_lbl_01;
}
catch (Exception ex)
{
MSG.Show(ex.Message, Global.GetRS["msgTilteError"], MessageBoxButton.OK, MsgIco.Error);
FtpManage.SetLog("命令執行失敗,原因:" + ex.Message);
downloadFiles = null;
return downloadFiles;
}
Ftp_lbl_03:
StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);//中文文件名
string line = reader.ReadLine();
while (line != null)
{
result.Append(line);
result.Append("\n");
line = reader.ReadLine();
}
if (result.Length == 0)
{
return null;
}
// to remove the trailing '\n'
result.Remove(result.ToString().LastIndexOf('\n'), 1);
reader.Close();
response.Close();
FtpManage.SetLog("命令已成功執行");
return result.ToString().Split('\n');
Ftp_lbl_04:
FtpManage.SetLog(ReplyInfo);
return null;
Ftp_lbl_02:
FtpManage.SetLog("550 獲取列表失敗,無法連接遠程伺服器!");
FtpManage.ftpmanage.IsRefurbish = true;
return null;
}
/// <summary>
/// 獲取指定目錄下的文件和文件夾。
/// </summary>
/// <param name="path">要獲取的目錄</param>
/// <returns></returns>
public string[] GetFileList(string path)//從ftp伺服器上獲得文件列表
{
return GetFileList(FTPVariable.FtpURLhead + FtpRemoteHost + "/" + path, WebRequestMethods.Ftp.ListDirectory);
}

/// <summary>
/// 獲取指定目錄下的文件和文件夾。
/// </summary>
/// <returns></returns>
public string[] GetFileList()//從ftp伺服器上獲得文件列表
{
return GetFileList(FTPVariable.FtpURLhead + FtpRemoteHost + "/", WebRequestMethods.Ftp.ListDirectory);
}

/// <summary>
/// 獲取目錄和文件名,返回目錄表。
/// </summary>
/// <param name="path">要獲取的目錄</param>
/// <returns></returns>
public string[] GetCatalog_FileList(string path)
{
string[] fountainhead = GetFileList(FTPVariable.FtpURLhead + FtpRemoteHost + "/" + path, WebRequestMethods.Ftp.ListDirectoryDetails);
string[] Catalog = null;
if (fountainhead == null)
{
return null;
}
Catalog = new string[fountainhead.Length];
for (int i = 3; i < fountainhead.Length; i++)
{
Catalog[i - 3] += fountainhead[i].Substring(55, fountainhead[i].Length - 55) + "&";//FileName
Catalog[i - 3] += fountainhead[i].Substring(30, 12) + "&";//FileSize
Catalog[i - 3] += fountainhead[i].Substring(42, 13) + "&";//AmendDate
Catalog[i - 3] += fountainhead[i].Substring(0, 3) + "&";
}
return Catalog;
}

Ⅵ 在linux下如何用c語言實現在伺服器接受文件的時候轉發給另一個伺服器

題目說得比較清楚,但問題說明確讓人摸不著頭腦。
根據題目的意思,其實這個問題很好解決:一旦伺服器接收到文件後(接收程序是自己編寫的程序),則調用三方ftp的C語言庫,將文件ftp到另一個伺服器即可。
若伺服器接收文件不是通過自己寫的程序,如是通過NFS寫過來的,則需要專門寫一個簡單的同步程序,定時檢查指定目錄下的文件屬性,一旦發現有新文件,則ftp到另一個伺服器即可。

Ⅶ FTP是什麼軟體有啥作用啊

FTP是文件傳輸協議,是用於在網路上進行文件傳輸的一套標准協議。

它工作在 OSI 模型的第七層, TCP 模型的第四層, 即應用層, 使用 TCP 傳輸而不是 UDP, 客戶在和伺服器建立連接前要經過一個「三次握手」的過程, 保證客戶與伺服器之間的連接是可靠的, 而且是面向連接, 為數據傳輸提供可靠保證。

工作原理:

FTP 採用 Internet 標准文件傳輸協議 FTP 的用戶界面, 向用戶提供了一組用來管理計算機之間文件傳輸的應用程序。

FTP 是基於客戶———伺服器(C/S)模型而設計的,在客戶端與 FTP 伺服器之間建立兩個連接。一條是數據連接,用於數據傳送;另一條是控制連接,用於傳送控制信息(命令和響應)。

客戶有三個構件:用戶介面、客戶控制進程和客戶數據傳送進程。伺服器有兩個構件:伺服器控制進程和伺服器數據傳送進程。在整個交互的 FTP 會話中,控制連接始終是處於連接狀態的,數據連接則在每一次文件傳送時先打開後關閉。

(7)cftp庫擴展閱讀:

FTP的傳輸方式

1、ASCII傳輸方式

假定用戶正在拷貝的文件包含的簡單ASCII碼文本,如果在遠程機器上運行的不是UNIX,當文件傳輸時ftp通常會自動地調整文件的內容以便於把文件解釋成另外那台計算機存儲文本文件的格式。

但是常常有這樣的情況,用戶正在傳輸的文件包含的不是文本文件,它們可能是程序,資料庫,字處理文件或者壓縮文件。在拷貝任何非文本文件之前,用binary 命令告訴ftp逐字拷貝。

2、二進制傳輸模式

在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應的。即使目的地機器上包含位序列的文件是沒意義的。例如,macintosh以二進制方式傳送可執行文件到Windows系統,在對方系統上,此文件不能執行。

如在ASCII方式下傳輸二進制文件,即使不需要也仍會轉譯。這會損壞數據。(ASCII方式一般假設每一字元的第一有效位無意義,因為ASCII字元組合不使用它。如果傳輸二進制文件,所有的位都是重要的。)

熱點內容
HBX編程 發布:2025-01-31 21:39:26 瀏覽:158
資料庫精品課 發布:2025-01-31 21:38:14 瀏覽:418
sqlsever語句 發布:2025-01-31 21:34:57 瀏覽:142
文泰里配置文件列表如何改 發布:2025-01-31 21:34:45 瀏覽:440
python的jieba分詞 發布:2025-01-31 21:33:23 瀏覽:672
外企配置怎麼說 發布:2025-01-31 21:31:11 瀏覽:270
搜索演算法bd 發布:2025-01-31 21:29:34 瀏覽:538
安卓系統怎麼安裝文件 發布:2025-01-31 21:21:32 瀏覽:866
分布式緩存架構圖 發布:2025-01-31 21:19:54 瀏覽:661
win10怎麼玩安卓游戲 發布:2025-01-31 21:13:48 瀏覽:186