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

正文內(nèi)容

一個(gè)smtp客戶端程序的設(shè)計(jì)與實(shí)現(xiàn)—畢業(yè)設(shè)計(jì)論文(存儲(chǔ)版)

  

【正文】 一個(gè)單元對(duì)數(shù)據(jù)進(jìn)行編碼 for(i=0,j=0 。0x0f)2)+ ((szEncoding[i+2]amp。0x03)4) )。0x0f)2))。下面就按照上述的兩個(gè)階段,分別進(jìn)行描述。 如果相同,那么說明此測(cè)試用例通過測(cè)試。再隨 機(jī) 的選取幾組測(cè)試用例,進(jìn)行測(cè)試。這是一個(gè)“測(cè)試 —— 修改 —— 再測(cè)試 —— 再 修改”的過程,直到整個(gè)系統(tǒng)能正常運(yùn)行,所有功能都能正常實(shí)現(xiàn)。經(jīng)過測(cè)試,本系統(tǒng)基本能符合要求,也能實(shí)現(xiàn)預(yù)期的功能。首先 ,我認(rèn)識(shí)到了基礎(chǔ)知識(shí)的重要性,從項(xiàng)目的整個(gè)研發(fā)流程來看都是以 SMTP的協(xié)議規(guī)定為基礎(chǔ)的,如果基礎(chǔ)知識(shí)掌握不扎實(shí),那么對(duì)于軟件的設(shè)計(jì)研發(fā)就無從下手。測(cè)試只能盡量避免錯(cuò)誤的產(chǎn)生、消除已發(fā)現(xiàn)的錯(cuò)誤,使程序中的錯(cuò)誤密度達(dá)到盡可能低的程度,減少錯(cuò)誤的引入。系統(tǒng)測(cè)試中, 把所有的模塊按照設(shè)計(jì)的要求組裝起來同時(shí)進(jìn)行測(cè)試。測(cè)試方式如上。以 CBASE64 的測(cè)試工作為例: 1) 準(zhǔn)備源數(shù)據(jù),如: Username(長(zhǎng)度為 3n+ 2)和預(yù)期的 結(jié)果 dXNlcm5hbWU6。 圖 14 BASE64編碼算法流程圖 5 軟件測(cè)試 在本章中,講述了在軟件所有模塊完成時(shí)所作的測(cè)試工作。0x03)4)+((szEncoding[i+1]amp。0xfc)2 )。0xf0)4)。那么無論提供的二進(jìn)制流是什么,都可以把它轉(zhuǎn)化為相應(yīng)的文本。提供的驗(yàn)證信息無外乎就是用戶名和密碼。 sTemp += szFinalBoundary 。 filename=%s\r\n\r\n), pAttachmentGetFilename() , pAttachmentGetFilename())。 //使用 CBASE64 的加密算法對(duì)內(nèi)容進(jìn)行加密 (thism_sBody , this())。 sTemp =_T(MIMEVersion: )。sTemp += sEmail。 圖 12 郵件發(fā)送流程圖 郵件內(nèi)容相關(guān)實(shí)現(xiàn) 與郵件相關(guān)的操作可以分成兩個(gè)部分一部分是有關(guān)郵件頭的操作,另一部分就是有關(guān)文件正文的操作。 } //最后在郵件內(nèi)容傳送結(jié)束后,應(yīng)該發(fā)送 QUIT 命令來中止連接 sTemp = _T(QUIT\r\n)。 sTemp = _T(Data\r\n)。 this( (LPCTSTR)sAuth , () )。 利用該通道就可以進(jìn)行郵件傳送操作了。 圖 10 類關(guān)系圖 核心模塊實(shí)現(xiàn)與核心功能編 碼 在 ,已經(jīng)對(duì)所有的模塊的功能以及相互關(guān)系進(jìn)行了介紹,那么下面將對(duì)其中的核心功能進(jìn)行描述。 圖 9 關(guān)于對(duì)話框 模塊之間的關(guān)系 本軟件是由各個(gè)工具類和界面類兩個(gè)大部分構(gòu)成的。 CMyEMailDlg 類:該類與用戶操作的主界面相對(duì)應(yīng)。在 VC 中,有三種應(yīng)用程序模式可供選擇,分別為:基于對(duì)話框的應(yīng)用程序、單文檔模式的應(yīng)用程序、多文檔模式的應(yīng)用程序。該方法就是根據(jù)編碼后的數(shù)據(jù)得到中間碼的操作。 2) TCHAR * CBASE64::Encode(TCHAR* buf , DWORD nSize):該方法的作用是對(duì)制定的數(shù)據(jù)進(jìn)行編碼。該類就是對(duì) BASE64 的算法 進(jìn)行的封裝。 3) protected DWORD bufLen:保護(hù)成員變量 ,表示當(dāng)前附件的長(zhǎng)度,單位是字節(jié)。標(biāo)志郵件正文的結(jié)束。只有正確包含上述域的郵件才能被郵件服務(wù)器接收。 4) BOOL AddRecipient(LPCTSTR szEmailAddress , LPCTSTR szFriendlyName= , RECIPIENTS_TYPE type=TO):作用是向郵件添加接收者信息。該方法有一個(gè)重載方法,參數(shù)為 CMIMEMessage*,作用是把一個(gè)附件添加到當(dāng)前 郵件。方便調(diào)用者使用該類。使用本類提供了能夠?qū)︵]件內(nèi)容進(jìn)行規(guī)范化設(shè)計(jì)的操作,使用這些操作能夠得到滿足 SMTP 協(xié)議規(guī)定的電子郵件。該方法的參數(shù)為 CMailMessage*類型的指針,代表一個(gè)郵件對(duì)象。 6) public virtual BOOL TransmitMessgae(CMailMessage * msg):該方法的作用是根據(jù)傳遞進(jìn)來的 CMailMessage 對(duì)象傳送郵件。其中 szSMTPServerName 是服務(wù)器的名稱, nPort是端口號(hào)。 4) private CSocket m_SMTPServer:私有成員變量,表示連接到服務(wù)器的網(wǎng)絡(luò)實(shí)體。其類圖 如圖 4所示。按照其完成的功能進(jìn)行劃分,每個(gè)工具類都可以作為一個(gè)子模塊。 因此,軟件采用 MFC 為應(yīng)用框架,配合 IDE 使用,能夠自動(dòng)提供出一套功能有限但設(shè)計(jì)結(jié)構(gòu)清晰的標(biāo)準(zhǔn) Windows 程序。而且使用 JAVA 的條件是用戶必須安裝虛擬機(jī),并且 JAVA 的執(zhí)行速度在目前來看似乎也不太被看好。 4) 按照 SMTP 的要求,對(duì)郵件進(jìn)行封裝,生成滿足協(xié)議要求的郵件。 2)可以根據(jù)用戶輸入的數(shù)據(jù)連接服務(wù)器,并進(jìn)行身份驗(yàn)證。 作為一個(gè)高度集成化的 IDE, Visual C++ 不僅僅提供了對(duì) C++語(yǔ)言的支持,而且能夠用來編輯一些簡(jiǎn)單的圖片和其他信息。目前的 C++開發(fā)陣地中,有兩套 application framework 是最為著名的,一套是 OWL,另一套是 MFC。使用 MFC 提供的有關(guān)底層 API,不依靠提供的組件,手動(dòng)分析協(xié)議的工作流程 ??梢岳^續(xù)發(fā)送郵件。 此時(shí)由于要進(jìn)行身份驗(yàn)證,那么必須使用 EHLO 而不是 HELO。目前大多數(shù)的 SMTP 協(xié)議實(shí)現(xiàn)參考的資料都是 2821 文檔。應(yīng)答碼列表如圖 2所示 。銷毀的命令為: QUIT。下例表示了在一個(gè)發(fā)送操作中這些命令的使用。因?yàn)猷]件是在傳送通道上發(fā)送,因此必須指明郵件內(nèi)容結(jié)尾,以便應(yīng)答對(duì)話可以重新開始。 2) 過程中的第二步是發(fā)送 RCPT 命令。本節(jié)只介紹了少數(shù)幾個(gè) SMTP 命令和代碼, 本節(jié)末尾 有詳細(xì)的命令列表和代碼列表。 當(dāng)同一個(gè)消息要發(fā)往不同的接收者時(shí), SMTP 遇到了向不同接收者發(fā)送同一份數(shù)據(jù)的復(fù)制品的問題,郵件命令和應(yīng)答有一個(gè)比較奇怪的語(yǔ)法,應(yīng)答也有一個(gè)數(shù)字代碼。 SMTP 發(fā)送者再發(fā)出 RCPT 命令指明郵件接收者。但基本的操作模式?jīng)]有變化,只是增加了相關(guān)的命令和格式。進(jìn)程可能直接和其它進(jìn)程通過已知的 IPCE 通信。實(shí)現(xiàn)了與郵件發(fā)送有關(guān)的基礎(chǔ)類,根據(jù)面向?qū)ο蟮奶匦?,迅速的搭建了郵件的客戶端。在實(shí)現(xiàn)過程中加入了認(rèn)證機(jī)制,因而,更安全、可靠。但使用該手段發(fā)送的郵件正文可能 包含有惡意代碼,從而出現(xiàn)安全隱患,因此,在本設(shè)計(jì)中并沒有提供相關(guān)支持。 畢業(yè)設(shè)計(jì) ( 論文 ) 一個(gè) SMTP 客戶端程序的設(shè)計(jì)與實(shí)現(xiàn) 論文作者姓名: 申請(qǐng)學(xué)位專業(yè): 申請(qǐng)學(xué)位類別: 指導(dǎo)教師姓名(職稱): 論文提交日期: 一個(gè) SMTP 客戶端程序的設(shè)計(jì)與實(shí)現(xiàn) 摘 要 本論文是在實(shí)現(xiàn)了 SMTP 協(xié)議的客戶端軟件 MyEMail 開發(fā)的基礎(chǔ)上完成的,涉及到軟件的設(shè)計(jì)、實(shí)現(xiàn)以及測(cè)試等方面。 目前,雖然協(xié)議規(guī)定在正文中可以使用網(wǎng)頁(yè)信息。能夠大大減少信息傳遞的時(shí)間,比傳統(tǒng)的信件傳遞方式更快捷,成本也更低。用計(jì)算機(jī)語(yǔ)言對(duì) SMTP 協(xié)議的工作原理進(jìn)行了描述。理解到傳送系統(tǒng)(或 IPCE)不是一對(duì)一的是很重要的。目前按照郵件協(xié)議的規(guī)定已經(jīng)不僅僅能夠傳送文本,而且能夠傳送文件,網(wǎng)頁(yè)以及多媒體信息。如果 SMTP接受者可以接收郵件則返回 OK 應(yīng)答。向前路徑是源路徑,而回復(fù)路徑是返回路徑(它用于發(fā)生錯(cuò)誤時(shí)返回郵件)。本節(jié)中提供了一些相關(guān)過程舉例和命令的說明,具體描述了 SMTP協(xié)議中數(shù)據(jù)的交互過程。 reversepath中不止包括了郵箱,它包括了主機(jī)和源郵箱的反向路由,其中的第一個(gè)主機(jī)就是發(fā)送此命令的主機(jī)。當(dāng)信件結(jié)尾收到并存儲(chǔ)后,接收者發(fā)送一個(gè) 250 OK 應(yīng)答。這些命令只能以上面的順序使用。 建立命令為 :HELO( EHLO)。之后雙方的交流就正式的結(jié)束了。類似于 821 文檔。服務(wù)器返回操作正確的 250應(yīng)答碼。 RFC2045 文檔: MIME( Multipurpose Inter Mail Extensions),是對(duì)郵件傳送中的有關(guān)多媒體信息進(jìn)行說明。對(duì)發(fā)送和接收的數(shù)據(jù)進(jìn)行分析,把文字描述的協(xié)議轉(zhuǎn)化為計(jì)算機(jī)語(yǔ)言,并 提供方便用戶使用的操作界面。 Visual C++支持的正是 MFC 的應(yīng)用框架。對(duì) 于開發(fā)者 而言,不必把大量的時(shí)間都放在那些與程序無關(guān)的事情上,無疑是一 件好事 。 3)可以對(duì)有關(guān)數(shù)據(jù)進(jìn)行加密。 5) 對(duì)郵件發(fā)送過程中,發(fā)送者與接收者之間的命令與應(yīng)答碼之間的關(guān)系進(jìn)行分析。因此沒有考慮使用 JAVA 來完成本設(shè)計(jì)。使用開發(fā)語(yǔ)言為 C++,是典型的面向?qū)ο笤O(shè)計(jì)語(yǔ)言。四個(gè)子模塊各守其則,分別代表了某一種功能或?qū)嶓w。 圖 4 CSMTP類類圖 成員 變量 說明: 1) private BOOL m_bConnected:私有成員變量,表示 當(dāng)前是否與服務(wù)器連接。 5) private CStringList * m_psErrorList:私有成員變量,是用于存放產(chǎn)生的錯(cuò)誤消息的列表。其默認(rèn)值為 SMTP_PORT 25。在該方法中封裝了郵件發(fā)送的操作并 對(duì) SMTP 協(xié)議規(guī)定的命令和應(yīng)答碼的交互操作做了實(shí)現(xiàn), 而且與郵件發(fā)送有關(guān)的身份驗(yàn)證操作也在該方法中實(shí)現(xiàn)。該對(duì)象包含有關(guān)的郵件信息,方便在本方法中對(duì)要發(fā)送的郵件進(jìn)行操作。其類圖如 圖 5所示。 4) private CArray CRecipient,CRecipientamp。返回值與該方法 意義相同 。默認(rèn)的接收者類型為 TO,也是當(dāng)前版本唯一能夠支持的類型。這些域的生成均包含在了該方法的實(shí)現(xiàn)中,通過調(diào)用該方法就可以獲得一個(gè)滿足 SMTP 協(xié)議要求的郵件頭。 三、 CMIMEMessage 子模塊:該模塊用于表示郵 件的附件。 成員 函數(shù) 說明: 1) public BOOL Attach(const CString amp。提供了對(duì)兩種數(shù)據(jù)源的加密操作和一種解密操作。參數(shù) TCHAR *buf 表示要進(jìn)行編碼的數(shù)據(jù)的首地址,參數(shù) DWORD nSize 則表示要編碼的長(zhǎng)度。參數(shù) CString sTemp 和 int amp。本軟件采用的是第一種。用于提供美觀、方便操作 的界面給用戶使用并保存用戶輸入的數(shù)據(jù)。其中界面類由 MFC 自動(dòng)創(chuàng)建,而工具類則由作者設(shè)計(jì)完成,整個(gè)軟件的開發(fā)過程就是把工具類添加進(jìn)界面類并使 之能夠協(xié)調(diào)工作的過程 ( 開發(fā)者的工作都是這樣)。 郵件發(fā)送實(shí)現(xiàn) 在郵件發(fā)送之前首先要與服務(wù)器建立連接,該操作由 CSMTP 類的 Connect 操作完成。綜上所述,建立與服務(wù)器連接過程程序流程圖如圖 11所示。 if( !thisGetResponse(AUTH_OK) ) //使用 CBASE64 對(duì)用戶名進(jìn)行加密并發(fā)送 CString username = ( sFrom , () )+\r\n 。 this( (LPCTSTR)sTemp , () )。 this( (LPCTSTR)sTemp , () )。有關(guān)郵件頭的操作封裝在 CMailMessage 類的PrepareHeader 方法中,方法內(nèi)容如下: //指明目的地 sTemp = _T(To: )。 sTemp += _T()。sTemp +=_T(\r\n)。 thism_sBody = bodyHeader + () 。 TCHAR * buf = pAttachmentGetContentBuffer() 。 thism_AttachmentString = sTemp 。 而為了能夠提供多語(yǔ)言的支持(比如有些服務(wù)器能夠提供中文的用戶名)那么在發(fā)送信息的時(shí)候就要把發(fā)出的消息轉(zhuǎn)化成由’ az’、’ AZ’ , ‘ 09’ ,’ +’ ,’ /’ 64 個(gè)字符組成的文本信息。編碼實(shí)現(xiàn)如下: //計(jì)算編碼后的消息長(zhǎng)度 int buflen = nSize/3 * 3 。 sTemp+=_T(((szEncoding[i+1]amp。 sTemp += _T( ((szEncoding[i]amp。0xf0)4) sTemp += _T( ((szEncoding[i+1]amp。所有的測(cè)試測(cè)試工作大概可以分為兩個(gè)時(shí)期:第一時(shí)期是在完成子模塊后,對(duì)子模塊進(jìn)行單獨(dú)的測(cè)試;第二時(shí)期則是所有模塊完成后,連接成 整個(gè)軟件時(shí)所作的系統(tǒng)測(cè)試。傳遞源給 CBASE64 對(duì)象的 Encode 方法,然后從方法中獲得結(jié)果,與預(yù)期結(jié)果進(jìn)行比對(duì)。 如果能夠順利通過上述的三個(gè)測(cè)試用例,那么說明對(duì)于加密的數(shù)據(jù)的長(zhǎng)度是沒有提供限制的。主要目標(biāo)是發(fā)現(xiàn)與接口有關(guān)的問題,測(cè)試每個(gè)功能是否都能正常工作。但是不可能完全杜絕軟件中的錯(cuò)誤。其次,我體會(huì)到了動(dòng)手實(shí)踐能力的重要性,有許多知識(shí)在理。在發(fā)送成功時(shí)能夠返回正確信息;發(fā)送錯(cuò)誤時(shí),能夠返回錯(cuò)誤的代碼和原因。 圖 15 發(fā)送成功 服務(wù)器: 發(fā)信人: 收信人: 標(biāo)題:測(cè)試 正文:測(cè)試 密碼: 12
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1