【正文】
省略部分代碼 ? []{ \\}。如果該郵箱地址是有效的地址,則服務(wù)器會返回響應(yīng)碼,表示客戶端所請求的操作成功,否則返回,表示郵件地址無效??蛻舳税l(fā)送命令以后,服務(wù)器通過向客戶端發(fā)送響應(yīng)碼告知其所發(fā)送的命令是否成功或被執(zhí)行。該函數(shù)的作用是向套接字的另一方發(fā)送指定緩沖區(qū)中的內(nèi)容。 .接收郵件服務(wù)器響應(yīng) ? 客戶端接收的消息來自于服務(wù)器端返回的響應(yīng)碼。 ? ()。 圖 復(fù)選框 .添加控件 ? 為對話框添加控件并設(shè)計界面如圖所示: 圖 程序設(shè)計界面及其關(guān)鍵控件號 ? 控件的以及為控件關(guān)聯(lián)的變量名和類型如圖所示: I D C _ C O N T E X TI D C _ P A S S W O R DI D C _ C O N N E C TI D C A N C E LI D C _ S E N D B T NI D C _ R E L YI D C _ N A M EI D C _ A D D R E S SI D C _ S U B J E C T圖 控件關(guān)聯(lián)的變量名及類型 為對話框添加成員變量 ? 在類中添加成員變量,即與服務(wù)器端交流的套接字。所謂,是將與共享的一個作為一部分的輸入,正好郵件系統(tǒng)的用戶名和口令可以作為這個。 ? 代碼通過調(diào)用 ()函數(shù)來連接服務(wù)器,調(diào)用函數(shù) ()來接收來自服務(wù)器的響應(yīng)信息,返回表示連接成功。 圖 程序連接服務(wù)器過程 來 自 服 務(wù) 器 的 響 應(yīng) 信 息填 寫 信 息 構(gòu)造并發(fā)送郵件 ? 服務(wù)器端服務(wù)成功啟動以后,客戶端可以將郵件發(fā)送到服務(wù)器,但是在郵件發(fā)送之前必須對郵件的數(shù)據(jù)進行順序調(diào)整,以符合協(xié)議的規(guī)范。 ? 代碼首先構(gòu)造了字符串,然后通過 ()函數(shù)發(fā)送到服務(wù)器,最后用 ()函數(shù)來接收服務(wù)器的消息響應(yīng)。 圖 程序發(fā)送郵件的過程 ? 打開收件人的郵箱查看收到的郵件如圖所示: 來 自 服 務(wù) 器 的 響 應(yīng) 信 息圖 查看郵箱中收到的郵件 主 題郵 件 內(nèi) 容 退出程序 ? 雙擊?退出程序?按鈕,添加消息響應(yīng)函數(shù) ()。 表 部分標(biāo)準(zhǔn)命令 命 令 意 義 終止與服務(wù)器會話 提供信箱大小 獲取郵件大小 客戶端發(fā)送賬號信息到服務(wù)器驗證 客戶端發(fā)送密碼信息到服務(wù)器驗證 取出第封郵件信頭和郵件內(nèi)容的前行 刪除第封郵件 復(fù)位會話 取出第封郵件 ? 在上表中列出了的相關(guān)命令,下面將對其中的命令進行詳解。 ? 命令將標(biāo)識客戶端發(fā)送的賬號信息。例如,用戶將刪除第封郵件,格式如下: ? ? 命令的作用是對會話過程進行復(fù)位。如果用戶需要具體了解,請參考其他書籍。 圖 復(fù)選框 . 添加控件 ? 為對話框添加控件并設(shè)計界面如圖所示: 圖 程序設(shè)計界面及其關(guān)鍵控件號 ? 控件的以及為控件關(guān)聯(lián)的變量名和類型如圖所示: I D C _ A D D R E S SI D C _ C O N N E C TI D C _ U S E R N A M EI D C A N C E LI D C _ P A S S W O R DI D C _ F R O MI D C _ S U B J E C TI D C _ C O N T E X TI D C _ L I S TI D C _ G E T圖 控件關(guān)聯(lián)的變量名及類型 . 為對話框添加成員變量 ? 在類中添加成員變量,即與服務(wù)器端會話的套接字。 .登錄驗證 ? 通過驗證后可以進入自己的郵箱并對郵箱中的郵件進行操作。 ? ()獲取用戶雙擊列表框時選擇項的文本。 ? 綜上所述,?雙擊此處獲取郵件內(nèi)容?列表框的鼠標(biāo)雙擊消息響應(yīng)函數(shù) ()代碼編寫如下: ? 實現(xiàn)的效果如圖所示。 23:09:0823:09:0823:09Monday, February 13, 2023 ? 1乍見翻疑夢,相悲各問年。 23:09:0823:09:0823:092/13/2023 11:09:08 PM ? 1成功就是日復(fù)一日那一點點小小努力的積累。 下午 11時 9分 8秒 下午 11時 9分 23:09: ? 楊柳散和風(fēng),青山澹吾慮。 2023年 2月 下午 11時 9分 :09February 13, 2023 ? 1業(yè)余生活要有意義,不要越軌。 23:09:0823:09:0823:09Monday, February 13, 2023 ? 1知人者智,自知者明。 2023年 2月 13日星期一 下午 11時 9分 8秒 23:09: ? 1楚塞三湘接,荊門九派通。 2023年 2月 下午 11時 9分 :09February 13, 2023 ? 1行動出成果,工作出財富。 ? 靜夜四無鄰,荒居舊業(yè)貧。 ? ()循環(huán)讀取郵件的內(nèi)容,篩選需要的信息。添加?獲取郵件序號和大小?按鈕的消息響應(yīng)函數(shù) ()如下: ? 向服務(wù)器發(fā)送命令時,服務(wù)器正確的返回信息示例如圖所示,代碼中實現(xiàn)的功能是從服務(wù)器返回的信息中提取出部分信息,然后將其添加到位的列表框中。 .創(chuàng)建套接字并獲取服務(wù)器的地址 ? 獲取的地址會被用在之后的連接服務(wù)器的操作中。在本節(jié)中,將向用戶講解命令等相關(guān)知識。 ? 如果服務(wù)器成功接收到命令之后,都會返回相應(yīng)的請求數(shù)據(jù)到客戶端。代碼如下: ? ( \\)。 ? 命令可以獲取指定郵件的大小信息。在本節(jié)中,將向用戶介紹部分命令以及編程實現(xiàn)接收郵件功能。最后通過 ()函數(shù)發(fā)送到服務(wù)器,最后用 ()函數(shù)來接收服務(wù)器的消息響應(yīng)。 .發(fā)送 命令 ? 發(fā)送郵件前必須要提供的關(guān)鍵信息之 ——收件人。 .登錄驗證 ? 選擇一種服務(wù)器支持的驗證方式,通過驗證后才可以進入自己的郵箱。 ? 使用函數(shù) ()來加載指定版本的套接字庫。實例中專門引入了兩個文件和,它們封裝了一個類,可以用它的成員函數(shù) ()對需要進行編碼的數(shù)據(jù)進行處理。通過本節(jié)實例的學(xué)習(xí),用戶可以仿照該實例的設(shè)計方法,自行編程實現(xiàn)郵件收發(fā)器。 ? 參數(shù)表示接收數(shù)據(jù)的緩沖區(qū)指針,與函數(shù) ()一樣。 ? 參數(shù)指向緩沖區(qū)的字符指針。通過上面的內(nèi)容,用戶可以看到這是發(fā)送郵件所要經(jīng)歷的一個典型的(客戶端服務(wù)器)通信過程,通過問答的形式將一封郵件發(fā)送到服務(wù)器。 ? 發(fā)送命令到服務(wù)器 ? ... 省略部分代碼 ? 當(dāng)服務(wù)器接收到該命令以后,會返回響應(yīng)碼到客戶端,表示服務(wù)器已經(jīng)關(guān)閉相關(guān)的數(shù)據(jù)通道。 ? 命令是客戶端發(fā)送到服務(wù)器表明客戶端將要發(fā)送郵件到服務(wù)器。其作用是向服務(wù)器問候。例如: ? ? ? : , , ? ? 發(fā)送者為多個地址 ? ? 接收者也為多個 ? : 郵件主題 ? 空行 ? ! ? 郵件數(shù)據(jù)體 ? ! ? 如果郵件沒有發(fā)送成功,則客戶端應(yīng)該將該郵件重新進行發(fā)送。在協(xié)議中,包含了很多郵件頭標(biāo)準(zhǔn)字段,部分郵件頭字段如表所示。因此,命令在通信中起著很重要的作用。代碼如下: ? 通過上面的代碼,用戶已經(jīng)向服務(wù)器發(fā)送了連接請求。 ? 。 釋放已經(jīng)加載的套接字庫 ? } ? 然后,用戶可以調(diào)用函數(shù) ()創(chuàng)建連接服務(wù)器的套接字了。 ? ()關(guān)閉服務(wù)器和客戶端的套接字。在實際編程中,不提倡使用該方法產(chǎn)生時間差,因為這種方法很危險,容易