關(guān)于vc實(shí)現(xiàn)ftp編程

關(guān)于vc實(shí)現(xiàn)ftp編程

ID:41032671

大?。?7.50 KB

頁數(shù):14頁

時(shí)間:2019-08-14

關(guān)于vc實(shí)現(xiàn)ftp編程_第1頁
關(guān)于vc實(shí)現(xiàn)ftp編程_第2頁
關(guān)于vc實(shí)現(xiàn)ftp編程_第3頁
關(guān)于vc實(shí)現(xiàn)ftp編程_第4頁
關(guān)于vc實(shí)現(xiàn)ftp編程_第5頁
資源描述:

《關(guān)于vc實(shí)現(xiàn)ftp編程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、一.概述TCP/IP協(xié)議是一個(gè)四層協(xié)議,它由應(yīng)用層、傳輸層、網(wǎng)絡(luò)層和鏈路層構(gòu)成。TCP/IP協(xié)議棧的每一層都由許多協(xié)議構(gòu)成,從而構(gòu)成了一個(gè)協(xié)議簇。應(yīng)用層主要包括的協(xié)議有Telnet、FTP、HTTP、SMTP/POP3和DNS等。傳輸層主要包括的協(xié)議有TCP和UDP。網(wǎng)絡(luò)層主要包括IP和IP的附屬協(xié)議。數(shù)據(jù)鏈路層主要包括的協(xié)議有ARP(地址解析協(xié)議)、RARP協(xié)議、Ethernet協(xié)議等。FTP(FileTransferProtocol)協(xié)議主要用來在網(wǎng)絡(luò)上進(jìn)行文件傳輸。FTP通訊除了有一個(gè)默認(rèn)的端口21外,還有其他端口,同城兩個(gè)端口同時(shí)進(jìn)行數(shù)據(jù)傳輸。一

2、個(gè)是默認(rèn)的端口(通常為21),主要進(jìn)行控制連接,即進(jìn)行命令協(xié)議及服務(wù)器端響應(yīng)碼的傳輸。另一個(gè)非標(biāo)準(zhǔn)端口主要進(jìn)行數(shù)據(jù),上傳下載文件等。關(guān)于FTP協(xié)議和FTP命令的詳細(xì)描述,參考《VisualC網(wǎng)絡(luò)通信編程實(shí)用案例精選》。實(shí)現(xiàn)FTP協(xié)議,有兩種方式,實(shí)用WinInetAPI和使用基本W(wǎng)insock。對(duì)于一般應(yīng)用,用WinInet效率要高,而且簡單。也可以用Winsock來編寫,這樣更加靈活,但是復(fù)雜度高且需要對(duì)協(xié)議非常熟悉。二.VC開發(fā)在項(xiàng)目中,為了開發(fā)效率,使用了WinInet的方式。FTP是MFC的WinInet支持的三個(gè)Internet功能(HTTP,

3、gopher)之一,我們需要先創(chuàng)建一個(gè)CInternetSession實(shí)例和一個(gè)CFtpConnection對(duì)象就可以實(shí)現(xiàn)和一個(gè)FTP服務(wù)器的通信。不需要直接創(chuàng)建CFtpConnection對(duì)象,而是通過調(diào)用CInternetsession::GetFtpConnection來完成這項(xiàng)工作。它創(chuàng)建CFtpConnection對(duì)象并返回一個(gè)指向該對(duì)象的指針。要聯(lián)接到FTP服務(wù)器,需要兩個(gè)步驟,首先必須創(chuàng)建一個(gè)CInternetSession對(duì)象,用類CInternetSession創(chuàng)建并初始化一個(gè)或幾個(gè)同時(shí)存在的Internet會(huì)話(session),并描

4、述與代理服務(wù)器的連接(如果有必要的話),如果在程序運(yùn)行期間需要保持與Internet的連接,可以創(chuàng)建一個(gè)CInternetsession對(duì)象作為類CWinApp的成員。然后利用CInternetsession對(duì)象獲取CFtpConnection對(duì)象。MFC中的類CFtpConnection管理我們與Internet服務(wù)器的連接,并直接操作服務(wù)器上的目錄和文件。1.Ftp連接類的信息下面我們簡要介紹連接類的信息1.1建立連接CInternetsession對(duì)象CInternetsession(LPCTSTRpstrAgent,DWORDdwConText,

5、DWORDdwACCESSType,LPCTSTRpstrProxyName,LPCTSTRpstrProxyBypass,DWORDdwFlags);在創(chuàng)建CInternetSession對(duì)象時(shí)調(diào)用這個(gè)成員函數(shù),CInternetsession是應(yīng)用程序第一個(gè)要調(diào)用的Internet函數(shù),它將創(chuàng)始化內(nèi)部數(shù)據(jù)結(jié)構(gòu),以備將來在應(yīng)用程序中調(diào)用。如果dwFlags包含INTERNET_FLAG_ASYNC,那末從這個(gè)句柄派生的所有的句柄,在狀態(tài)回調(diào)例程注冊(cè)之前,都會(huì)出現(xiàn)異步狀態(tài)。如果沒有打開Internet連接,CInternetsession就會(huì)拋出一個(gè)例外

6、,AfxThrowInternetException。GetFtpConnection()函數(shù)CFtpConnection*CIternetsession::GetFtpConnection(LPCTSTRpstrServer,LPCTSTRpstrUserName,LPCTSTRpstrPassword,INTERNET_PORTnPort,BOOLbPassive);調(diào)用這個(gè)函數(shù)建立一個(gè)FTP連接,并獲得一個(gè)指向CFtpConnection對(duì)象的指針,GetFtpConnection連接到一個(gè)FTP服務(wù)器,創(chuàng)建并返回指向CFtpConnection對(duì)

7、象的指針,它不在服務(wù)器上進(jìn)行任何操作。如果打算讀寫文件,必須進(jìn)行分步操作。關(guān)于查找,打開和讀寫文件的信息需參考CFtpConnection和CFtpFileFind類。對(duì)這個(gè)函數(shù)的調(diào)用返回一個(gè)指向CFtpConnection對(duì)象的指針。如果調(diào)用失敗,檢查拋出的CInternetException對(duì)象,就可以確定失敗的原因。1.2遠(yuǎn)程目錄操作CreateDirectory()函數(shù)BOOLCreateDirectory(LPCTSTRpstrDirName);ReturnValueNonzeroifsuccessful;otherwise0.Ifthecal

8、lfails,theWindowsfunctionGetLastErrormay

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。