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

正文內(nèi)容

一個smtp客戶端程序的設(shè)計與實現(xiàn)—畢業(yè)設(shè)計論文-wenkub.com

2024-11-25 11:23 本頁面
   

【正文】 其次,我體會到了動手實踐能力的重要性,有許多知識在理。在發(fā)送成功時能夠返回正確信息;發(fā)送錯誤時,能夠返回錯誤的代碼和原因。但是不可能完全杜絕軟件中的錯誤。 圖 15 發(fā)送成功 服務(wù)器: 發(fā)信人: 收信人: 標(biāo)題:測試 正文:測試 密碼: 123456(錯誤密碼) 單擊確定后發(fā)送,發(fā)送失敗,返回錯誤信息,如 圖 16所示。主要目標(biāo)是發(fā)現(xiàn)與接口有關(guān)的問題,測試每個功能是否都能正常工作。當(dāng)完成了所有模塊的子模塊測試,那么就進行第二階段的測試。 如果能夠順利通過上述的三個測試用例,那么說明對于加密的數(shù)據(jù)的長度是沒有提供限制的。調(diào)用準(zhǔn)備測試的方法,得到結(jié)果。傳遞源給 CBASE64 對象的 Encode 方法,然后從方法中獲得結(jié)果,與預(yù)期結(jié)果進行比對。在測試前,事先準(zhǔn)備了測試所用的數(shù)據(jù)和預(yù)期的結(jié)果。所有的測試測試工作大概可以分為兩個時期:第一時期是在完成子模塊后,對子模塊進行單獨的測試;第二時期則是所有模塊完成后,連接成 整個軟件時所作的系統(tǒng)測試。ilen。0xf0)4) sTemp += _T( ((szEncoding[i+1]amp。 }else if(n%3==2) { //如果有兩個剩余的字符,那么用一個 =補足 sTemp += _T( (szEncoding[i]amp。 sTemp += _T( ((szEncoding[i]amp。0x3f))。 sTemp+=_T(((szEncoding[i+1]amp。0xfc)2 )。編碼實現(xiàn)如下: //計算編碼后的消息長度 int buflen = nSize/3 * 3 。把原文的 24 個二進制位當(dāng)成一個 bit 流,從左到右每 6位為一個單元提取出來,作為一個索引值。 而為了能夠提供多語言的支持(比如有些服務(wù)器能夠提供中文的用戶名)那么在發(fā)送信息的時候就要把發(fā)出的消息轉(zhuǎn)化成由’ az’、’ AZ’ , ‘ 09’ ,’ +’ ,’ /’ 64 個字符組成的文本信息。畢竟 CMailMessage 類是用于掌管郵件內(nèi)容的類,沒有把與郵件有關(guān)的東西交給它更令人放心的了。 thism_AttachmentString = sTemp 。 sContent += \r\n\r\n 。 TCHAR * buf = pAttachmentGetContentBuffer() 。 CMIMEMessage*pAttachment= (CMIMEMessage*) (i)。 thism_sBody = bodyHeader + () 。 有關(guān)郵件正文的操作則封裝在 PrepareBody 方法中 ,方法如下: //給正文添加一段相關(guān)的分割標(biāo)志,以及正文的格式 CString bodyHeader = _T(\r\nBOUNDARY\r\n)\ _T(Contenttype: text/plain。sTemp +=_T(\r\n)。 sTemp += this(%a, %d %b %y %H:%M:%S %Z)。 sTemp += _T()。 sTemp += (i0?_T(,):_T())。有關(guān)郵件頭的操作封裝在 CMailMessage 類的PrepareHeader 方法中,方法內(nèi)容如下: //指明目的地 sTemp = _T(To: )。對于在郵件的發(fā)送過程中,正文也是通過上述方法進行傳遞的,只是正文的內(nèi)容由 CMailMessage 進行了封裝實現(xiàn),而 CSMTP 所作的工作只是發(fā)送而已。 this( (LPCTSTR)sTemp , () )。//結(jié)束符號 this( (LPCTSTR)sTemp , () )。 this( (LPCTSTR)sTemp , () )。 password = (password , ())+\r\n。 if( !thisGetResponse(AUTH_OK) ) //使用 CBASE64 對用戶名進行加密并發(fā)送 CString username = ( sFrom , () )+\r\n 。相關(guān)的操作是在 CSMTP 類中的 TransmitMessage 方法中完成的。綜上所述,建立與服務(wù)器連接過程程序流程圖如圖 11所示。 if( !this()) //用用戶指定的服務(wù)器和端口號碼連接到服務(wù)器,成功繼續(xù)執(zhí)行 ; 失敗返回 if( !this(p,thisGetPort())) //接收服務(wù)器發(fā)送的消息代碼,為 220 說明服務(wù)器接受了請求,否則出錯 if(!thisGetResponse(SMTP_SERVER_READY) ) //發(fā)送 EHLO 命令給服務(wù)器,要求建立一條通信通道 (EHLO %s\r\n , localHostName)。 郵件發(fā)送實現(xiàn) 在郵件發(fā)送之前首先要與服務(wù)器建立連接,該操作由 CSMTP 類的 Connect 操作完成。在 CSMTP 和 CMailMessage中又會看到,它們對 CBASE64 類的調(diào)用。其中界面類由 MFC 自動創(chuàng)建,而工具類則由作者設(shè)計完成,整個軟件的開發(fā)過程就是把工具類添加進界面類并使 之能夠協(xié)調(diào)工作的過程 ( 開發(fā)者的工作都是這樣)。該對話框資源如圖 8 所示。用于提供美觀、方便操作 的界面給用戶使用并保存用戶輸入的數(shù)據(jù)。這個類定義的對象可以說是程序的入口點 (并不是真正的入口,真正的入口是 WinMain 函數(shù) )。本軟件采用的是第一種。一個良好的界面能夠帶給用戶以愉快的使用體驗,從而會加大對作品的喜愛程度。參數(shù) CString sTemp 和 int amp。在兩種方法中,返回值均為編碼后的數(shù)據(jù)。參數(shù) TCHAR *buf 表示要進行編碼的數(shù)據(jù)的首地址,參數(shù) DWORD nSize 則表示要編碼的長度。 2) private CString sEncode 、 CString sDecode:表示編碼和解碼的數(shù)據(jù)。提供了對兩種數(shù)據(jù)源的加密操作和一種解密操作。 2) public CString GetFilename() 、 CString GetTitle() 、 CString GetContent()、 TCHAR * GetContentBuffer()、 DWORD GetBufferLength():上述 方法作用分別為獲取附件名稱、附件標(biāo)題、附件內(nèi)容(以字符串形勢返回)、附件內(nèi)容(以數(shù)組方式返回)、附件的長度。 成員 函數(shù) 說明: 1) public BOOL Attach(const CString amp。 圖 6 CMIMEMessage類圖 成員變量說明 : 1) protected CString m_Filename:保護成員變量,表示附件所代表的文件的文件名。 三、 CMIMEMessage 子模塊:該模塊用于表示郵 件的附件。該方法中規(guī)定的郵件分隔標(biāo)志為 BOUNDARY,該標(biāo)志由 PrepareHeader()方法中定義。這些域的生成均包含在了該方法的實現(xiàn)中,通過調(diào)用該方法就可以獲得一個滿足 SMTP 協(xié)議要求的郵件頭。 6) public virtual void PrepareHeader():本方法的作用是根據(jù)對象本身的成員變量來生成郵件頭。默認的接收者類型為 TO,也是當(dāng)前版本唯一能夠支持的類型。參數(shù) type 是個 enum RECIPIENT_TYPE 類型的變量,有三個合法值,分別為: TO,CC,BCC。返回值與該方法 意義相同 。該變量就是用于存儲多個接收者的。 4) private CArray CRecipient,CRecipientamp。 3) protected CString m_sSubject、 m_sFrom、 m_sTo、 m_sHeader、 m_sBody、m_sPassword、 CTime m_tDateTime:表示郵件的信息,分別為 :郵件的標(biāo)題、郵件發(fā)送者、郵件接收者、郵件頭信息、郵件體正文、身份驗證的密碼以及郵件發(fā)送的時間。其類圖如 圖 5所示。有關(guān)應(yīng)答碼和與應(yīng)答碼 相關(guān) 信息,均在本類的靜態(tài)成員變量 ResponseCode responseTable 中做了規(guī)定。該對象包含有關(guān)的郵件信息,方便在本方法中對要發(fā)送的郵件進行操作。 7) private CString CookBody(CMailMessage * msg):該方法用于剔除在郵件正文以及郵件中與結(jié)束標(biāo)志沖突的字符。在該方法中封裝了郵件發(fā)送的操作并 對 SMTP 協(xié)議規(guī)定的命令和應(yīng)答碼的交互操作做了實現(xiàn), 而且與郵件發(fā)送有關(guān)的身份驗證操作也在該方法中實現(xiàn)。 5) public BOOL Connect():連接服務(wù)器方法。其默認值為 SMTP_PORT 25。在該方法中客戶端接收從服務(wù)器發(fā)送來的消息,并進行解析,然后根據(jù)給定的參數(shù)responseExpected 來進行判斷。 5) private CStringList * m_psErrorList:私有成員變量,是用于存放產(chǎn)生的錯誤消息的列表。表示使用服務(wù)器的 25 號端口。 圖 4 CSMTP類類圖 成員 變量 說明: 1) private BOOL m_bConnected:私有成員變量,表示 當(dāng)前是否與服務(wù)器連接。該類提供了兩個重要的程序接口 Connect 和 TransmitMessage。四個子模塊各守其則,分別代表了某一種功能或?qū)嶓w。整個程序就是使用了 MFC 提供的應(yīng)用程序框架,并在其中添加了上述幾個工具 類,相互協(xié)調(diào)工作而得來。使用開發(fā)語言為 C++,是典型的面向?qū)ο笤O(shè)計語言。但 C語言并沒有提供太多有關(guān)圖形設(shè)計方面的框架(或者是目前沒有用于 C 語言的應(yīng)用程序框架)。因此沒有考慮使用 JAVA 來完成本設(shè)計。已經(jīng)超越了 C++稱為最受歡迎的語言之一。 5) 對郵件發(fā)送過程中,發(fā)送者與接收者之間的命令與應(yīng)答碼之間的關(guān)系進行分析。 2) 根據(jù) MFC提供的 API 連接服務(wù)器,建立一條連接發(fā)送者和接收者的通道。 3)可以對有關(guān)數(shù)據(jù)進行加密。就算你對這個工具絲毫不了解,也可以通過該文檔快速的上手使用。對 于開發(fā)者 而言,不必把大量的時間都放在那些與程序無關(guān)的事情上,無疑是一 件好事 。支持 MFC 框架只是 Visual C++IDE 的一個特性而已。 Visual C++支持的正是 MFC 的應(yīng)用框架。這是一個集成的開發(fā)環(huán)境。對發(fā)送和接收的數(shù)據(jù)進行分析,把文字描述的協(xié)議轉(zhuǎn)化為計算機語言,并 提供方便用戶使用的操作界面。對于協(xié)議的相關(guān)知識只能停留在理論階段。 RFC2045 文檔: MIME( Multipurpose Inter Mail Extensions),是對郵件傳送中的有關(guān)多媒體信息進行說明。服務(wù)器驗證無誤后,返回 334 代碼,并要求客戶端發(fā)送密碼。服務(wù)器返回操作正確的 250應(yīng)答碼。其中定義了新的關(guān)鍵字 AUTH LOGIN,并且規(guī)定了身份認證的格式和驗證的字符串采用的編碼方式。類似于 821 文檔。在這個體系中,建立之初由 RFC821 文檔規(guī)定的內(nèi)容已經(jīng)不能滿足人們?nèi)找媾蛎浀男枨?。之后雙方的交流就正式的結(jié)束了。 打開傳送通道時,要交換一些信息以確定雙方的身份。 建立命令為 :HELO( EHLO)。 end with < CRLF> .< CRLF> S: Blah blah blah... S:..等等 S: < CRLF> .< CRLF> R: 250 OK 此信被第一和三兩個人接收,而第二個人在此主機上沒有郵箱。這些命令只能以上面的順序使用。 郵件內(nèi)容指示符確認郵件操作并告知接收者可以存儲和再發(fā)送數(shù)據(jù)了。當(dāng)信件結(jié)尾收到并存儲后,接收者發(fā)送一個 250 OK 應(yīng)答。此過程可能會重復(fù)若干次。 reversepath中不止包括了郵箱,它包括了主機和源郵箱的反向路由,其中的第一個主機就是發(fā)送此命令的主機。 1) 過程中的第一步是 MAIL 命令, reversepath>包括源郵箱。本節(jié)中提供了一些相關(guān)過程舉例和命令的說明,具體描述了 SMTP協(xié)議中數(shù)據(jù)的交互過程。 命令與應(yīng)答由 ASCII 字母表組成,當(dāng)傳送服務(wù)提供 8位字節(jié)傳送通道,每 7位字符正確傳送,而最高位被填充為 0。向前路徑是源路徑,而回復(fù)路徑是返回路徑(它用于發(fā)生錯誤時返回郵件)。如圖 1所示。如果 SMTP接受者可以接收郵件則返回 OK 應(yīng)答。 工作模型 SMTP 設(shè)計基于以下通信模型:針對用戶的郵件請求,發(fā)送 SMTP 建立與接收SMTP 之間建立一個雙向的傳送通道,用于發(fā)送與接收 SMTP 的命令與應(yīng)答碼。目前按照郵件協(xié)議的規(guī)定已經(jīng)不僅僅能夠傳送文本,而且能夠傳送文件,網(wǎng)頁以及多媒體信息。更特別的是,郵件可以通過不同網(wǎng)絡(luò)上的主機接力式傳送。理解到傳送系統(tǒng)(或 IPCE)不是一對一的是很重要的。它是互聯(lián)網(wǎng)上的一種通訊協(xié)議,工作于應(yīng)用層,使用端口 為 25。用計算機語言對 SMTP 協(xié)議的工作原理進行了描述。目前, SMTP 協(xié)議已經(jīng)有了大量的實現(xiàn),應(yīng)用廣泛。能夠大大減少信息傳遞的時間,比傳統(tǒng)的信件傳遞方式更快捷,成本也更低。 C++。 目前,雖然協(xié)議規(guī)定在正文中可以使用網(wǎng)頁信息。 MyEMail 軟件是根據(jù) SMTP 協(xié)議的原理、協(xié)議的模型以及工作過程 ,而設(shè)計出一款完整、實用的基于 SMTP 協(xié)議的客戶端軟件。
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1