黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

ESFramework Demo -- 簡(jiǎn)單的FTP服務(wù)器Demo(

系統(tǒng) 2192 0

FTP服務(wù)器最核心的功能就是提供文件的上傳、下載服務(wù)。在 ESFramework Demo -- 文件傳送Demo(附源碼) 一文中,我們演示了如何在客戶(hù)端與客戶(hù)端之間相互傳送文件,現(xiàn)在我們就實(shí)現(xiàn)一個(gè)簡(jiǎn)單的FTP服務(wù)器,以演示如何在客戶(hù)端與服務(wù)器之間傳送文件。在閱讀本文之前,請(qǐng)務(wù)必先掌握 ESFramework 開(kāi)發(fā)手冊(cè)(03) -- 文件(夾)傳送 一文中介紹的文件傳送的流程及相關(guān)的API的用法。

本Demo主要演示以下功能:

(1)客戶(hù)端瀏覽服務(wù)器默認(rèn)目錄下的所有文件。

(2)客戶(hù)端上傳文件到服務(wù)器的默認(rèn)目錄下。

(3)客戶(hù)端可以下載服務(wù)器默認(rèn)目錄下任何一個(gè)文件。

一.定義信息類(lèi)型

根據(jù)上面提到的功能需求,我們需要定義相應(yīng)的信息類(lèi)型:

上傳文件就不用定義額外的信息類(lèi)型了,可以直接使用IFileOutter的請(qǐng)求發(fā)送文件方法就可以了。

二.服務(wù)端

服務(wù)端將文件目錄設(shè)定在運(yùn)行目錄下的"FileFold"文件夾,所有上傳的文件都將被保存到這個(gè)目錄,所有要下載的文件也來(lái)自這個(gè)目錄。

服務(wù)端的CustomizeHandler類(lèi)實(shí)現(xiàn)了自定義信息處理器接口ICustomizeHandler,當(dāng)收到來(lái)自客戶(hù)端的FtpInformationTypes.GetAllFileNames同步調(diào)用時(shí),就將FileFold目錄下的所有文件列表返回給客戶(hù)端。當(dāng)收到請(qǐng)求下載文件的信息時(shí),就調(diào)用IFileController.BeginSendFile方法將指定的文件發(fā)給客戶(hù)端。

當(dāng)客戶(hù)端要上傳文件時(shí),會(huì)直接調(diào)用IFileOutter的BeginSendFile,此時(shí),服務(wù)端將觸發(fā)IFileController的FileRequestReceived事件。所以,服務(wù)端需要預(yù)定并處理這個(gè)事件:

服務(wù)端將保存文件的路徑設(shè)定在FileFold目錄下,然后調(diào)用IFileController.BeginReceiveFile方法開(kāi)始接收文件。當(dāng)然,這里的處理做了很多簡(jiǎn)化,比如沒(méi)有判斷磁盤(pán)空間是否足夠、是否有同名文件等等。

三.客戶(hù)端

客戶(hù)端登錄成功后,進(jìn)入主界面。主界面初始化時(shí),將向服務(wù)器發(fā)送FtpInformationTypes.GetAllFileNames同步調(diào)用,然后將返回的文件列表顯示在ListView中。

雙擊ListView中的某個(gè)文件時(shí),就向服務(wù)器發(fā)送FtpInformationTypes.DownloadFile信息。就像上面描述的一樣,服務(wù)端就會(huì)調(diào)用IFileController.BeginSendFile方法發(fā)送指定的文件,然后,客戶(hù)端也會(huì)觸發(fā)IFileOutter.FileRequestReceived事件,處理這個(gè)事件時(shí),我們讓用戶(hù)選擇要存儲(chǔ)的路徑。

如果用戶(hù)取消了保存路徑的選擇,表示放棄下載文件,這樣就調(diào)用IFileOutter.RejectFile來(lái)進(jìn)行取消操作。
當(dāng)客戶(hù)端點(diǎn)擊上傳按鈕時(shí),就直接調(diào)用IFileOutter.BeginSendFile來(lái)準(zhǔn)備上傳文件。

這將引發(fā)服務(wù)端IFileController的FileRequestReceived事件觸發(fā),然后,服務(wù)端會(huì)調(diào)用IFileController.BeginReceiveFile方法,從而啟動(dòng)文件的正式傳遞。

下圖是客戶(hù)端正在進(jìn)行上傳下載文件時(shí)的截圖:

ESFramework Demo -- 簡(jiǎn)單的FTP服務(wù)器Demo(附源碼)

本文是一個(gè)最簡(jiǎn)單的演示 文件上傳 下載功能的demo,非常的粗糙,僅僅用于示范如何使用ESPlus提供的文件傳送功能在服務(wù)端和客戶(hù)端之間傳遞文件。若要正式開(kāi)發(fā)一個(gè)文件服務(wù)器系統(tǒng),本文只能算是一個(gè)簡(jiǎn)陋的起點(diǎn),還有很多復(fù)雜的事情要做,那已經(jīng)超出了本文的內(nèi)容,但你若有任何想法,歡迎與我們討論。

四.源碼下載

ESFramework.Demos.Ftp 源碼

閱讀 更多ESFramework開(kāi)發(fā)手冊(cè)系列文章

-----------------------------------------------------------------------------------------------------------------------------------------------

關(guān)于ESFramework的任何問(wèn)題,歡迎聯(lián)系我們:

電話(huà):027-87638960

Q Q:372841921



ESFramework Demo -- 簡(jiǎn)單的FTP服務(wù)器Demo(附源碼)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論