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

正文內(nèi)容

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

2025-01-08 11:23上一頁面

下一頁面
  

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