基于ESMTP的水文數(shù)據(jù)共享方法設(shè)計與實現(xiàn)_第1頁
基于ESMTP的水文數(shù)據(jù)共享方法設(shè)計與實現(xiàn)_第2頁
基于ESMTP的水文數(shù)據(jù)共享方法設(shè)計與實現(xiàn)_第3頁
基于ESMTP的水文數(shù)據(jù)共享方法設(shè)計與實現(xiàn)_第4頁
基于ESMTP的水文數(shù)據(jù)共享方法設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、基于ESMTP的水文數(shù)據(jù)共享方法設(shè)計與實現(xiàn)摘要針對水利部門數(shù)據(jù)共享的高本錢、低效率現(xiàn)狀,提出一種通過eail方式進展水文數(shù)據(jù)共享的方法。通過對ESTP和PP3協(xié)議的應(yīng)用,發(fā)送方將數(shù)據(jù)打包作為郵件的附件發(fā)送,接收方解析郵件,從而實現(xiàn)數(shù)據(jù)共享。該方法靈敏方便,運行本錢低。本文對協(xié)議進展了簡單說明,同時對數(shù)據(jù)交換流程和實現(xiàn)類圖進展了詳細說明。關(guān)鍵詞水文數(shù)據(jù)共享,ESTP,PP3當前,水利信息化正在水利行業(yè)大力推行,其中水文數(shù)據(jù)的共享是水資源管理以及防洪抗災(zāi)等決策支持的核心。由于水利部門管轄流域分布廣,各水文管理單位地域分散,管理機制多是采用集中-分散方式。管理站采集數(shù)據(jù)后傳送給各個分中心,再由分中心

2、將信息匯總后發(fā)送給管理局或水利廳,使得管理局或水利廳能對管轄范圍的水情信息進展整體把握,做出決策分析;此外,因為河流之間的聯(lián)動關(guān)系,各分中心、管理站之間也需要互相通信,因此水文信息的互傳及共享非常必要。目前水文信息的互傳及共享采用的方式主要有以下三種:1, ;2,公用通信信道;3,VPN或網(wǎng)站進展數(shù)據(jù)共享。但這三種方式有其明顯的缺乏之處: 方式需要人工參與,限制了工作人員的工作范圍和處理事情的靈敏性,而且需要接收方人工錄入數(shù)據(jù),這樣效率很低且缺乏實時性。公用通信信道方式通常利用PSTN、GS、GPRS等進展數(shù)據(jù)傳輸,這種方法傳送的數(shù)據(jù)量受限且運行費用較高。通過VPN或網(wǎng)站進展數(shù)據(jù)共享,這種方式

3、相對于前兩種而言,真正實現(xiàn)了信息化,但建立VPN或網(wǎng)站都需要較高的投資和后期高昂的維護費用,這阻礙了它的廣泛應(yīng)用及推廣。為了彌補上述方法的缺乏,本文提出了基于eail方式的水文數(shù)據(jù)共享的方法,通過郵件的收發(fā),網(wǎng)絡(luò)協(xié)議身份驗證來實現(xiàn)信息的互傳,實現(xiàn)無人工參與的數(shù)據(jù)共享。該方法簡單、高效,只要能上網(wǎng),不需要額外的系統(tǒng)維護本錢,對于大多經(jīng)濟還不興旺的水利單位具有實用性。1.1PP3協(xié)議PP適用于/S構(gòu)造的脫機模型的電子郵件協(xié)議,目前已開展到第三版,稱PP3。在PP3協(xié)議中有三種狀態(tài):認可狀態(tài),處理狀態(tài),和更新狀態(tài)。當客戶機與效勞器建立聯(lián)絡(luò)時,一旦客戶機提供了自己身份并成功確認,即由認可狀態(tài)轉(zhuǎn)入處理狀

4、態(tài),在完成相應(yīng)的操作后客戶機發(fā)出QUIT命令,那么進入更新狀態(tài),更新之后重返認可狀態(tài)。一般情況下,大多數(shù)現(xiàn)有的PP3客戶與效勞器執(zhí)行采用ASII明文發(fā)送用戶名和口令,在認可狀態(tài)等待客戶連接的情況下,客戶發(fā)出連接,并由命令USER/PASS對在網(wǎng)絡(luò)上發(fā)送明文用戶名和口令給效勞器進展身份確認。一旦確認成功,便轉(zhuǎn)入處理狀態(tài)。1.2ESTP協(xié)議ESTP英文全稱是“ExtendedSTP,是對STP協(xié)議的擴展,為了防止垃圾郵件的泛濫,采用了身份驗證機制。在登陸效勞器后需經(jīng)過身份驗證才能發(fā)信。其他局部同STP協(xié)議根本一樣。命令A(yù)UTHLGIN表示開場身份驗證,然后是用戶名和密碼的驗證。用戶名和密碼都是使用

5、Base64編碼。1.2.1STP協(xié)議:STP稱為簡單郵件傳輸協(xié)議SipleailTransferPrtl,目的是向用戶提供高效、可靠的郵件傳輸。STP的一個重要特點是它可以在傳送中接力傳送郵件,即郵件可以通過不同網(wǎng)絡(luò)上的主機接力式傳送。工作在兩種情況下:一是電子郵件從客戶機傳輸?shù)叫谄鳎欢菑哪骋粋€效勞器傳輸?shù)搅硪粋€效勞器。STP是個懇求/響應(yīng)協(xié)議,它監(jiān)聽25號端口,用于接收用戶的ail懇求,并與遠端ail效勞器建立STP連接??蛻舳讼蛐谄靼l(fā)送懇求命令,效勞器向客戶端返回一些響應(yīng)信息。命令和響應(yīng)都是基于ASII文本,并以R和LF符完畢。響應(yīng)包括一個表示返回狀態(tài)的三位數(shù)字代碼。1.2.2Ba

6、se64編碼:由于歷史原因,Eail只被允許傳送ASII字符,即一個8位字節(jié)的低7位。因此,假如您發(fā)送了一封帶有非ASII字符即字節(jié)的最高位是1的Eail通過有“歷史問題的網(wǎng)關(guān)時就可能會出現(xiàn)問題。網(wǎng)關(guān)可能會把最高位置為0而產(chǎn)生錯誤?;谝陨系囊恍┲饕虍a(chǎn)生了Base64編碼。Base64編碼的思想是采用64個根本的ASII碼字符對數(shù)據(jù)進展重新編碼。它將需要編碼的數(shù)據(jù)拆分成字節(jié)數(shù)組。以3個字節(jié)為一組。按順序排列24位數(shù)據(jù),再把這24位數(shù)據(jù)分成4組,即每組6位。再在每組的最高位前補兩個0湊足一個字節(jié)。這樣就把一個3字節(jié)為一組的數(shù)據(jù)重新編碼成了4個字節(jié)。當所要編碼的數(shù)據(jù)的字節(jié)數(shù)不是3的整倍數(shù),也就

7、是說在分組時最后一組不夠3個字節(jié)。這時在最后一組填充1到2個0字節(jié)。并在最后編碼完成后在結(jié)尾添加1到2個“=。該系統(tǒng)通過網(wǎng)絡(luò)郵件收發(fā)協(xié)議進展水文信息的傳送。從信息保密的角度出發(fā),發(fā)送協(xié)議我們采用具有身份驗證機制的ESTP協(xié)議;從信息可讀性角度出發(fā),即信息編碼方式的限制,我們通過Base64編碼進展解決;接收采用通用的PP3協(xié)議完成。2.1數(shù)據(jù)交換流程當分中心需要將信息上報給管理處時,需要先設(shè)置郵件發(fā)送端口號以及郵件效勞器,接著驗證用戶身份,然后是發(fā)送信息的添加和發(fā)送;接收方利用PP3協(xié)議到郵件效勞器上進展下載,其中關(guān)鍵是附件的處理,當信息從郵件效勞器中下載到接收方,那么完成了一次信息交換。圖1

8、數(shù)據(jù)交換示意圖從上圖中可以把整個數(shù)據(jù)交換流程劃分為三個局部:郵件發(fā)送,郵件接收和郵件處理。1郵件發(fā)送:把郵件從本地發(fā)送到郵件效勞器。首先,設(shè)置郵件發(fā)送的端口號和郵件效勞器;進展效勞器連接;其次,將用戶名和密碼經(jīng)過Base64編碼,并且發(fā)送進展驗證;最后,郵件發(fā)送。2郵件接收:把郵件從效勞器下載到本地并處理附件。主要應(yīng)用PP3協(xié)議將郵件從效勞器進展郵件下載。其主要流程如圖3所示:圖2發(fā)郵件流程圖首先,設(shè)置郵件接收端口號和下載郵件效勞器;然后進展效勞器連接;其次,用戶名和密碼檢驗;最后,郵件接收和附件處理。圖3收郵件流程圖3郵件處理:構(gòu)建和分析郵件的各個部件郵件頭,郵件體,附件等。該局部為整個系統(tǒng)

9、實現(xiàn)的重點也是關(guān)鍵。它主要完成郵件體的生成、附件添加、以及接收郵件后郵件的解析和附件的處理等。郵件的生成主要通過ieessage、ieBdy、ieHeader類。首先創(chuàng)立ieField類創(chuàng)立郵件項列表,然后ieHeader進展郵件的頭部的生成,并存放到郵件項列表中;郵件體通過ieBdy進展創(chuàng)立,加載附件,最后再調(diào)用ieessage類構(gòu)成郵件;實現(xiàn)代碼如下:ieessageail;/設(shè)置郵件各項的值ail.SetFr(ailAddress);ail.SetT(DestinatinAddress);ail.SetSubjet(郵件主題);ail.SetDate();ail.SetVersin();

10、ail.SetntentType(ultipart/ixed);ail.SetBundary();/創(chuàng)立郵件體ieBdy*pBp;pBp=ail.reatePart();pBp-SetText(數(shù)據(jù)見附件);pBp=ail.reatePart();/添加附件pBp-SetDesriptin(attahent);pBp-SetTransferEnding(base64);pBp-ReadFrFile(附件);圖4郵件收發(fā)類圖郵件解析主要實現(xiàn)郵件附件的處理,它通過定義中間文檔將附件拷貝到內(nèi)存當中,然后再從內(nèi)存中將數(shù)據(jù)讀出,然后以與郵件名同名的文件將附件存放到用戶設(shè)定的目錄下;實現(xiàn)代碼如下:Stdi

11、FileFile;File.pen(a.txt,File:dereate|File:derite);LNGsize=0,nsize=0;/承受郵件到文件hile(size=lSize)/承受郵件nsize=_sSket.ReEive(buf,10240);size=size+nsize;File.rite(buf,nsize);File.Flush();File.lse();/翻開接收到的文件File.pen(a.txt,File:deRead);/得到文件的大小LNGFileSize=File.GetLength();/建立緩沖區(qū)來存放讀取文件的內(nèi)容har*pBuff=neharFileSi

12、ze;File.Read(pBuff,size);/讀取文件到緩沖區(qū)File.lse();/關(guān)閉文件File.Reve(a.txt);ieessageail;ail.Lad(pBuff,size);ieBdy:BdyListbdies;/定義變量Intnunt=ail.GetBdyPartList(bdies);ieBdy:BdyList:nst_iteratrit;/獲得附件fr(it=bdies.begin();it!=bdies.end();it+)ieBdy*pBP=*it;if(pBP-IsAttahent()/獲得附件名stringstrNae=pBP-GetNae();/存儲附件

13、到當前目錄pBP-riteTFile(FilePath+strNae._str();deletepBuff;/刪除緩沖區(qū)該系統(tǒng)采用Visual+6.0進展開發(fā),將數(shù)據(jù)交換流程中三個主要局部封裝為標準動態(tài)鏈接庫。該模塊具有通用性,可應(yīng)用于需要進展數(shù)據(jù)交換和共享的系統(tǒng)。從圖4中可以看出通過ieHeader,ieBdy和ieessage主要用于郵件體的生成和解析;Stp類用于郵件發(fā)送;Pp3用于郵件接收。基于Eail方式的水文數(shù)據(jù)共享系統(tǒng)的設(shè)計和開發(fā)為目前水文數(shù)據(jù)的互傳和共享提供了一種新的方式,該方法高效、簡單易行,只要開通了Internet網(wǎng)絡(luò)即可應(yīng)用,無運行維護費用。目前該系統(tǒng)在都江堰灌區(qū)東風(fēng)渠管理處應(yīng)用良好。1潘愛民譯.Visua

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論