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

正文內(nèi)容

ftp協(xié)議的分析與軟件設(shè)計(jì)(參考版)

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

【正文】 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 致 謝 。 由于論文設(shè)計(jì)的時(shí)間有限,軟件系統(tǒng) 還存在一些需要改進(jìn)的地方 。 通過(guò) FTP軟件編寫實(shí)現(xiàn)遠(yuǎn)程機(jī)器間的資源共享,實(shí)現(xiàn)基本的文件上次與下載功能,為日常生活所應(yīng)用。 ( 3) 設(shè)計(jì) FTP服務(wù)器, 實(shí)現(xiàn)了 FTP服務(wù)器程序編寫 。 } 32 第五章 總結(jié)與展望 本論文主要完成了如下工作: ( 1)探討了 FTP協(xié)議,對(duì)其進(jìn)行了分析 。 case 1。 //一個(gè)包沒(méi)有接收完全 CasyncSocket::OnReceive(nErrorCode)。 return。 } } 在 OnReceive中加入: switch(GetPacket(this,data,sizeof(data))) { case 1。 else { //接收一個(gè)包完畢 ReceivedSize=0。 ReceivedSize= ReceivedSize+Once。 int Once。 return ByteCount。 if (PacketSize PacketSize|| ByteCount=0) //接收數(shù)據(jù)過(guò)程中出錯(cuò) return 1。 char Buffer[20200]。因此,應(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ù)包大小相同。 …… } ( 5) 實(shí)現(xiàn) 數(shù)據(jù)包完整性 的設(shè)計(jì) 在 程序調(diào)試中我發(fā)現(xiàn)如果發(fā)送端一次發(fā)送較大的數(shù)據(jù)包,接收端不是一次完全收到。 OldLoc=szLocDirectory。 } //設(shè)置當(dāng)前路徑 上傳結(jié)束 STOR 命令 建立數(shù)據(jù)通道 啟動(dòng)上傳線程 讀取本地文件 將數(shù)據(jù)發(fā)送至數(shù)據(jù)通道 得到待上傳的文件 從本地文件讀取數(shù)據(jù) 讀取數(shù)據(jù)不為空 N Y 30 lpFtpConnectionSetCurrentDirectory(szFtpDirectory)。SendFileThread()函數(shù) 在確定好保存的目錄后,調(diào)用 PreSendFile函數(shù)上傳文件,實(shí)際操作和文件下載是一樣的原理。 ( 4)上傳文件 圖 47 流程圖 flow chart of programme 上傳文件與下載文件及其類似,客戶端是從本地文件里每次讀取 一定長(zhǎng)度 的數(shù)據(jù),發(fā)送到數(shù)據(jù)通道,直至文件全部發(fā)送完畢 。 下載結(jié)束 RETR 命令 建立數(shù)據(jù)通道 啟動(dòng)下載線程 創(chuàng)建本地文件 將數(shù)據(jù)寫入文件 得到待下載的遠(yuǎn)程文件 從數(shù)據(jù)通道接收數(shù)據(jù) 接收數(shù)據(jù)不為空 N Y 29 } filerange[i*2+1]=+1。iMAX_THREAD_NUM。 本程序主要通過(guò) ReceiveFileThread()函數(shù) 實(shí)現(xiàn) , 在ReceiveFileThread函數(shù)在確定目錄后,調(diào)用 PreReceiveFile函數(shù)進(jìn)行文件下載 的實(shí)際操作,本系統(tǒng)在下載時(shí) 根據(jù)文件的長(zhǎng)度采用文件分塊的方法分幾個(gè)線程進(jìn)行下載。 } FILE_INF ( 3)文件下載 圖 46 流程圖 The flow chart of programme 值得指出的是,之所以要多次接收數(shù)據(jù)是因?yàn)槲募⒉皇且淮涡詡鬏斶^(guò)來(lái)的,而是以 一定 長(zhǎng)度的數(shù)據(jù)傳輸過(guò)來(lái)的。 DWORD nFileSizeHigh。 FILETIME ftLastAccessTime。 DWORD dwFileAttributes。 本程序主要 先通過(guò)調(diào)用 GetDir()函數(shù)用于獲得文件系統(tǒng)目錄 , 然后調(diào)用 GetFileIcon()從系統(tǒng)中讀取某一文件的圖標(biāo) 以及 SetFileColumns()函數(shù)把讀取到的某個(gè)文件的信息(創(chuàng)建時(shí)間、文件大小等)顯示在列表視圖中 。 } ( 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ù)通道就建立好了。 if(!pServViewBeginFindServFile()) AfxMessageBox(建立網(wǎng)絡(luò)連接失敗 ”)。 以下 是其 主要 代碼: OnQuickconnect() { GetFtpPara(amp。 用戶單擊【快速連接】后,客戶端開(kāi)始連接服務(wù)器。 ? ReceiveFileThread()函數(shù) : 用于接收文件的操作 。 ? SetFileColumns()函數(shù) : 用于把讀取到的某個(gè)文件的信息(創(chuàng)建時(shí)間、文件大小等)顯示在列表視圖控件中 。 ( 3) CftpParaClass類 ? GetFileIcon()函數(shù): 用于從系統(tǒng)中讀取某一文件的圖標(biāo)。 ? BeginFindLocFile()函數(shù) : 將調(diào)用 CmyAppThread類中的 FindLocFileThread()函數(shù)開(kāi)始尋找本地文件線程。 2)主要類接口 ( 1) CftpInfoView類 ? OnRecordFtpInfo()函數(shù) : 自定義消息的消息處理函數(shù),當(dāng)應(yīng)用程序中其他類需要顯示消息時(shí),便向該視圖發(fā)送該消息使之顯示相應(yīng)的消息。 ( 5) CmyAppThread類 : 是進(jìn)行實(shí)際操作類,本系統(tǒng)的核心部分。 ( 3) CservFileView類 : 與 ClocFileView類相似。 1)主要類定義 ( 1) CftpInfoView類:該視圖 類用于顯示用戶與服務(wù)器的連接信息。 5) 總流 程圖 24 圖 42 程序流程圖 The flow chart of programme 界面設(shè)計(jì) FTP界面詳細(xì)圖 如下: 圖 43 FTP 界面 interface of FTP 登錄 FTP 服務(wù)器 開(kāi)始 傳輸文件 退出 25 具體 設(shè)計(jì)與 實(shí)現(xiàn) 根據(jù)前面分析介紹, 客 戶端系統(tǒng)分為以下幾個(gè)功能模塊:信息反饋、文件瀏覽、文件傳輸模塊。啟動(dòng)接收線程代碼如下: AfxBeginThread(RecvThreadProc,(LPVOID)pRecv,THREAD_PRIORITY_BELOW_NORMAL) RecvThreadProc原型如下: UNIT RecvThreadProc(LPVOID IParam) pRecv也是一個(gè) RECV_STRUCT結(jié)構(gòu)體,其中結(jié)構(gòu)體成員 pWnd是用于顯示文件的信息和接收進(jìn)度的對(duì)話框, hSocket 就是由 accept() 函數(shù)返回的 socket 。 ? 接收線程 當(dāng)監(jiān)聽(tīng)線程收到發(fā)送端的連接請(qǐng)求后,阻塞函數(shù) accept()函數(shù)將返回一個(gè) socket,該socket代表發(fā)送端的一個(gè)連接,接收端可以利用該 socket與發(fā)送端進(jìn)行通信。因此, 在調(diào)用該 AfxBeginThread函數(shù)前,要 先 調(diào)用 socket()創(chuàng)建 hSocket。SOCKET hSocket。 。 。 。 。 。接收端只能有一個(gè)監(jiān)聽(tīng)線程。在調(diào)用該 AfxBeginThread方法前,應(yīng)先調(diào)用 socket(), bind(), listen()等函數(shù)初始化 m_ListenSock。 先要利用 Socket 進(jìn)行 TCP 網(wǎng)絡(luò)連接,這個(gè)在前面已經(jīng)有詳細(xì)的介紹。 程序中主要有三類線程:監(jiān)聽(tīng)線程,接收線程,發(fā)送線程。 一般在傳輸過(guò) 程中,服務(wù)器和 用戶 之間 可 以 同時(shí)接收或發(fā)送多個(gè)文件 , 接收和發(fā)送可以同時(shí)進(jìn)行 , 這些功 能 可以 概括為并行的傳輸 。 ( 3)文件瀏覽模塊:包括對(duì)本機(jī)上的文件進(jìn)行瀏覽和對(duì)服務(wù)器上的文件進(jìn)行瀏覽。文件的傳輸包括上傳和下載兩個(gè)功能。 ( 2) 文件傳輸功能:文件的上傳和下載。 ( 4) 通過(guò)多線程的方法 , 使得整個(gè)軟件不至于在下載或上傳時(shí) , 出現(xiàn)由于某個(gè)函數(shù)的繁忙計(jì)算而導(dǎo)致界面 “ 死掉 ” 的情況 。 ( 2) 在用戶界面上顯示服務(wù)器對(duì)每條 FTP內(nèi)部命令反饋的應(yīng)答信息。 int nStatus。 DWORD dwBytesSend。 SOCKET s。 CHAR buffSend[DATA_BUFSIZE]。然后再分別用 DataSend()和 DataRecv()完成發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的工作。在多線程的具體實(shí)現(xiàn)方面, 文件的傳輸具體實(shí)現(xiàn)以及在傳輸過(guò)程中會(huì)遇到的需要解決的問(wèn)題等, 會(huì)進(jìn)一步在 下一章客戶端的實(shí)現(xiàn)當(dāng)中提到。以向客戶端傳送數(shù)據(jù)為例:主線程啟動(dòng)后,創(chuàng)建接受和處理客戶端請(qǐng)求線程;而接受和處理客戶端請(qǐng)求線程 獲知客戶端需要下載數(shù)據(jù)時(shí),創(chuàng)建上傳數(shù)據(jù)線程;上傳數(shù)據(jù)線程完成向客戶端發(fā)送數(shù)據(jù)的任務(wù);最后當(dāng)發(fā)送數(shù)據(jù)結(jié)束后該線程退出。 在這個(gè)過(guò)程中,服務(wù)器需要兩個(gè) Socket:一個(gè) Socket 用來(lái)監(jiān)聽(tīng)連接;一個(gè) Socket 用來(lái)
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1