freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

ftp協(xié)議的分析與軟件設(shè)計(jì)-資料下載頁(yè)

2024-11-06 08:23本頁(yè)面
  

【正文】 設(shè)計(jì)與實(shí)現(xiàn) ( 1) 登陸 連接 圖 44 程序流程圖 The flow chart of programme 登陸相對(duì)其他功能而言要簡(jiǎn)單的多。 用戶單擊【快速連接】后,客戶端開(kāi)始連接服務(wù)器。 OnQuickconnect()函數(shù)響應(yīng)該消息 , 該函數(shù)主要完成任務(wù)為:獲得服務(wù)器 IP地址 ;把用戶賬戶密碼信息傳給服務(wù)器進(jìn)行登陸驗(yàn)證; 連接成功后 創(chuàng)建發(fā)送請(qǐng)求與接收目錄線程;設(shè)置【快速連接】按鈕為無(wú)效狀態(tài) (已連接) 。 以下 是其 主要 代碼: OnQuickconnect() { GetFtpPara(amp。(pServViewm_ctServDir))。 if(!pServViewBeginFindServFile()) AfxMessageBox(建立網(wǎng)絡(luò)連接失敗 ”)。 m_bConnected=TRUE。 } ( 2)文件瀏覽 列文件目錄稍復(fù)雜點(diǎn),但實(shí)際上也很簡(jiǎn)單,其復(fù)雜部分在于將服務(wù)器發(fā)過(guò)來(lái)的文件信息數(shù)據(jù)進(jìn)行解析并 得到相應(yīng)的文件名,文件類型,文件大小,創(chuàng)建時(shí)間等,處理流程如下: 服務(wù)器地址和端口 打開(kāi)命令通道 登陸成功 接受歡迎信息 USER 命令 PASS 命令 發(fā)送空命令 回應(yīng)信息正確 回應(yīng)信息正確 Y N Y N 27 圖 45 流程圖 flow chart of programme 在發(fā)送 PORT 命令之前要確保本地已 經(jīng)創(chuàng)建好了偵聽(tīng) socket,然后將該 socket 的地址和端口號(hào)轉(zhuǎn)換為 xxx,xxx,xxx,xxx,xxx,xxx(其中前四個(gè) xxx 是將 ip 地址中的點(diǎn)換成逗號(hào),后兩個(gè) xxx 實(shí)際上分別是 port/256 和 port%256)作為 PORT 命令的參數(shù)發(fā)送給服務(wù)器端,服務(wù)器收到該條命令后會(huì)創(chuàng)建一個(gè) socket 來(lái)連接我們已經(jīng)在偵聽(tīng)的 socket,這樣,數(shù)據(jù)通道就建立好了。接著發(fā)送一條 LIST 命令,客戶端便將當(dāng)前遠(yuǎn)程目錄下的文件信息從數(shù)據(jù)通道發(fā)送過(guò)來(lái),我們對(duì)接受到的數(shù)據(jù)進(jìn)行解析便可以得到每個(gè)文件 /目錄具體的信息,如文件名 ,文件類型,文件大小,創(chuàng)建時(shí)間和權(quán)限等。 本程序主要 先通過(guò)調(diào)用 GetDir()函數(shù)用于獲得文件系統(tǒng)目錄 , 然后調(diào)用 GetFileIcon()從系統(tǒng)中讀取某一文件的圖標(biāo) 以及 SetFileColumns()函數(shù)把讀取到的某個(gè)文件的信息(創(chuàng)建時(shí)間、文件大小等)顯示在列表視圖中 。 以下是 描述 文件信息的數(shù)據(jù)結(jié)構(gòu) 設(shè)計(jì) 代碼: struct { TCHAR szFileName[MAX_PATH]。 DWORD dwFileAttributes。 TYPE A命令 獲取本地 IP 地址 創(chuàng)建監(jiān)聽(tīng) Socket 綁定 Socket 并偵聽(tīng) 在數(shù)據(jù)通道接收數(shù)據(jù) PORT 命令 LIST 命令 數(shù)據(jù)緩存非空 從緩存中取出一行 對(duì)該行信息解析得到文件 /目錄信息 在遠(yuǎn)程目錄插入該文件 /目錄 結(jié)束 N Y 28 FILETIME ftCreationTime。 FILETIME ftLastAccessTime。 FILETIME ftLastWriteTime。 DWORD nFileSizeHigh。 DWORD nFileSizeLow。 } FILE_INF ( 3)文件下載 圖 46 流程圖 The flow chart of programme 值得指出的是,之所以要多次接收數(shù)據(jù)是因?yàn)槲募⒉皇且淮涡詡鬏斶^(guò)來(lái)的,而是以 一定 長(zhǎng)度的數(shù)據(jù)傳輸過(guò)來(lái)的??蛻舳嗣看螐臄?shù)據(jù)通道 獲取一部分?jǐn)?shù)據(jù)并將其追寫(xiě)到已創(chuàng)建的文件里,直至接受數(shù)據(jù)失敗。 本程序主要通過(guò) ReceiveFileThread()函數(shù) 實(shí)現(xiàn) , 在ReceiveFileThread函數(shù)在確定目錄后,調(diào)用 PreReceiveFile函數(shù)進(jìn)行文件下載 的實(shí)際操作,本系統(tǒng)在下載時(shí) 根據(jù)文件的長(zhǎng)度采用文件分塊的方法分幾個(gè)線程進(jìn)行下載。以下是文件分塊 下載的算法 實(shí)現(xiàn) 主要 代碼: for(int i=0。iMAX_THREAD_NUM。i++) { if(i0) { filerange[i*2]=i*(+1)。 下載結(jié)束 RETR 命令 建立數(shù)據(jù)通道 啟動(dòng)下載線程 創(chuàng)建本地文件 將數(shù)據(jù)寫(xiě)入文件 得到待下載的遠(yuǎn)程文件 從數(shù)據(jù)通道接收數(shù)據(jù) 接收數(shù)據(jù)不為空 N Y 29 } filerange[i*2+1]=+1。 } filerange[MAX_THREAD_NUM*21]=[MAX_THREAD_NUM *22]。 ( 4)上傳文件 圖 47 流程圖 flow chart of programme 上傳文件與下載文件及其類似,客戶端是從本地文件里每次讀取 一定長(zhǎng)度 的數(shù)據(jù),發(fā)送到數(shù)據(jù)通道,直至文件全部發(fā)送完畢 。 本程序塊主要通過(guò) SendFileThread()函數(shù) 實(shí)現(xiàn) 。SendFileThread()函數(shù) 在確定好保存的目錄后,調(diào)用 PreSendFile函數(shù)上傳文件,實(shí)際操作和文件下載是一樣的原理。 以下是 SendFileThread() 函數(shù) 主要代碼 :CMyAppThread::SendFileThread(LPVOID lParam) { try { //建立 FTP連接 pFtpConnection=lpISessionGetFtpConnection(szFtpName,szFtpUser,szFtpPassword,nPort)。 } //設(shè)置當(dāng)前路徑 上傳結(jié)束 STOR 命令 建立數(shù)據(jù)通道 啟動(dòng)上傳線程 讀取本地文件 將數(shù)據(jù)發(fā)送至數(shù)據(jù)通道 得到待上傳的文件 從本地文件讀取數(shù)據(jù) 讀取數(shù)據(jù)不為空 N Y 30 lpFtpConnectionSetCurrentDirectory(szFtpDirectory)。 ::SetCurrentDirectory(szLocDirectory)。 OldLoc=szLocDirectory。 OldFtp=szFtpDirectory。 …… } ( 5) 實(shí)現(xiàn) 數(shù)據(jù)包完整性 的設(shè)計(jì) 在 程序調(diào)試中我發(fā)現(xiàn)如果發(fā)送端一次發(fā)送較大的數(shù)據(jù)包,接收端不是一次完全收到。而是在接收端幾次觸發(fā)了 Receive事件后才接到一個(gè)完整的大型數(shù)據(jù)包。因此,應(yīng)當(dāng)在 OnReceive函數(shù)中加入代碼統(tǒng)計(jì)已收到的字符數(shù),并與上次接收到的數(shù)據(jù)拼接起來(lái),當(dāng)小于應(yīng)收到的字符數(shù)時(shí)就返回,等待下一次 Receive事件的到來(lái),知道統(tǒng)計(jì)收到的字符數(shù)與雙方約定好的數(shù)據(jù)包大小相同。以下是具體實(shí)現(xiàn)代碼: //負(fù)責(zé)接收數(shù)據(jù)的函數(shù),返回收到的字節(jié)數(shù) Long ReceiveOnce(CAsyncSocket *socket,char *dest,long occupied,long PacketSize) { long ByteCount。 char Buffer[20200]。 ByteCount=socketReceive(Buffer, PacketSize)。 if (PacketSize PacketSize|| ByteCount=0) //接收數(shù)據(jù)過(guò)程中出錯(cuò) return 1。 StrCombine(dest,occupied,buffer, ByteCount)。 return ByteCount。 } //根據(jù)接受 情況判斷現(xiàn)在的狀態(tài) int GetPacket(CAsyncSocket *socket,char *packet,int PacketSize) { static long ReceivedSize=0。 int Once。 Once=ReceiveOnce( socket, packet, ReceivedSize, PacketSize) if (Once==1) //傳輸中出現(xiàn)錯(cuò)誤 31 return 1。 ReceivedSize= ReceivedSize+Once。 if(ReceivedSize PacketSize) //一個(gè)包沒(méi)有接收完全 return 0。 else { //接收一個(gè)包完畢 ReceivedSize=0。 return 1。 } } 在 OnReceive中加入: switch(GetPacket(this,data,sizeof(data))) { case 1。 //傳輸中出現(xiàn)錯(cuò)誤 CasyncSocket::OnReceive(nErrorCode)。 return。 case 0。 //一個(gè)包沒(méi)有接收完全 CasyncSocket::OnReceive(nErrorCode)。 return。 case 1。 //接收一個(gè)包完畢 break。 } 32 第五章 總結(jié)與展望 本論文主要完成了如下工作: ( 1)探討了 FTP協(xié)議,對(duì)其進(jìn)行了分析 。 ( 2)對(duì)開(kāi)發(fā)技術(shù) Winsock進(jìn)行了簡(jiǎn)介 。 ( 3) 設(shè)計(jì) FTP服務(wù)器, 實(shí)現(xiàn)了 FTP服務(wù)器程序編寫(xiě) 。 ( 4) 設(shè)計(jì) FTP客戶端, 實(shí)現(xiàn)了 FTP客戶端程序編寫(xiě) 。 通過(guò) FTP軟件編寫(xiě)實(shí)現(xiàn)遠(yuǎn)程機(jī)器間的資源共享,實(shí)現(xiàn)基本的文件上次與下載功能,為日常生活所應(yīng)用。 同時(shí)加深了自己對(duì)有關(guān)方面知識(shí)的理解。 由于論文設(shè)計(jì)的時(shí)間有限,軟件系統(tǒng) 還存在一些需要改進(jìn)的地方 。 另外,如果在本FTP軟件系統(tǒng) 基礎(chǔ)上增 加 斷點(diǎn)續(xù)傳等其他功能 ,會(huì)使系統(tǒng)更全面、更完美。 33 參考文獻(xiàn) [1] Postel J,Reynolds Transfer Protocol(FTP)[S].RFC 959,1985. [2] Ruediger R Outlets In Action. Windows Sockets,Microsoft Developer Network Technology . [3] 曹建剛,楊冬黎 .FTP客戶端實(shí)現(xiàn) [J].佳木斯大學(xué)學(xué)報(bào)(自然科學(xué)版), 2020,( 1) . [4] 孫海明 .精通 Windows Sockets 網(wǎng)絡(luò)開(kāi)發(fā) [M].人民郵電出版社, 2020, 2044. [5] 丁展,劉海英等 .VC++網(wǎng)絡(luò)通信編程實(shí)用案例精選 [M].人民郵電出版社, 2020, 187221. [6] 殷肖川,劉志宏等 .網(wǎng)絡(luò)開(kāi)發(fā)與編程技術(shù) [M].西安交通大學(xué)出版社, 2020,2050. [7] (美) Uyless [M].機(jī)械工業(yè)出版社, 1998,6080. [8] 雷斌,楊建華,何斌等 .VC++ 網(wǎng)絡(luò)編程技術(shù) [M].人民郵電出版社, 2020, 2438. [9] 曾紀(jì)粵,蔡利民 .VC++ 開(kāi)發(fā)網(wǎng)絡(luò)通信程序 [M].現(xiàn)代通信技術(shù), 2020, (4), 161205. [10] 蔣東興 .WinSocks 網(wǎng)絡(luò)程序設(shè)計(jì)大全 [M].清華大學(xué)出版社, 1999, 10100. [11] 周宏生 .基于 FTP協(xié)議的文件上傳和下載 [J].科技資訊, 2020,( 2) . [12] 趙寶剛,高偉,李齊斌 .用 Winsock 實(shí)現(xiàn) FTP文件的上傳和下載 [M].信息技術(shù), 2020, 8591. [13] (美 )EdTaylor 著,王虎,劉志剛等譯 .TCP/IP 使用詳解 [M].機(jī)械工業(yè)出版社, 2020. [14] 秦穎,施煒,李錚 . Windows Sockets 規(guī)范及應(yīng)用 [M].電子工業(yè)出版社, 1997, 5080. [15] 謝希仁 .計(jì)算機(jī)網(wǎng)絡(luò)(第四版) [M].大連理工出版社, 2020, 231- 264. 34 致 謝
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1