




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于WinSock的郵件系統(tǒng)1 設(shè)計(jì)目標(biāo):1.1 SMTP發(fā)送郵件服務(wù)器(c語(yǔ)言)1.2 POP3接受郵件服務(wù)器(c語(yǔ)言)1.3 php WebMail客戶(hù)端2 相關(guān)技術(shù)介紹:2.1 TCP/IP協(xié)議協(xié)議 2.1.1 發(fā)展至今最成功的通信協(xié)議,它源于20世紀(jì)60年代末美國(guó)政府資助的一個(gè)分組交換網(wǎng)絡(luò)研究項(xiàng)目,到20世紀(jì)90年代已經(jīng)發(fā)展成為計(jì)算機(jī)之間最常用的組網(wǎng)協(xié)議。它允許分布在各地的裝著完全不同的系統(tǒng)的計(jì)算機(jī)互相通信。它是一個(gè)真正的開(kāi)放系統(tǒng),該協(xié)議的定義及多中實(shí)現(xiàn)可以通過(guò)多途徑無(wú)償?shù)玫?。隨著pc的普及,tcp/ip以其開(kāi)放的特點(diǎn),成為了internet的基礎(chǔ),該廣域網(wǎng)(WAN)把全世界數(shù)以百萬(wàn)的
2、電腦連接在了一起。2.1.2 TCP/IP結(jié)構(gòu),如下圖:各種應(yīng)用層協(xié)議TCPUDPIP設(shè)備驅(qū)動(dòng)程序及接口卡應(yīng)用層傳輸層網(wǎng)絡(luò)層鏈路層2.1.3 各層功能概述: (1)鏈路層:有時(shí)被稱(chēng)作數(shù)據(jù)鏈路層或網(wǎng)絡(luò)接口層,通 常包括操作系統(tǒng)中的設(shè)備驅(qū)動(dòng)程序和計(jì)算機(jī)中對(duì)應(yīng)的網(wǎng)絡(luò)接口卡,它們一起處理與電纜(或其他任何傳輸媒介)的物理接口細(xì)節(jié)。該層包含的協(xié)議有:ARP(地址轉(zhuǎn)換協(xié)議)和RARP(反向地址轉(zhuǎn)換協(xié)議).(2)網(wǎng)絡(luò)層:有時(shí)又被稱(chēng)為互連網(wǎng)層,負(fù)責(zé)分組在網(wǎng)絡(luò)中的活動(dòng),包括ip(網(wǎng)際協(xié)議)、ICMP(Internet互連網(wǎng)控制報(bào)文協(xié)議)以及IGMP(Internet組管理協(xié)議)。(3)傳輸層:該層主要為兩臺(tái)主機(jī)
3、的應(yīng)用程序提供端到端的數(shù)據(jù)通信,它分為兩個(gè)不同的協(xié)議:TCP(傳輸控制協(xié)議)和UDP(用戶(hù)數(shù)據(jù)報(bào)協(xié)議)。TCP提供端到端的質(zhì)量保證的數(shù)據(jù)傳輸,該層負(fù)責(zé)數(shù)據(jù)的分組,質(zhì)量控制和超時(shí)重發(fā)等,對(duì)于應(yīng)用層來(lái)說(shuō),就可以忽略這些工作。UDP則只提供簡(jiǎn)單的把數(shù)據(jù)從一端發(fā)送到另外一端,至于數(shù)據(jù)是否到達(dá)或按時(shí)到達(dá)、數(shù)據(jù)是否損壞都必須由應(yīng)用層來(lái)做。這兩種協(xié)議各有用途,前者可用于面向連接的應(yīng)用,而后者則在及時(shí)性服務(wù)中有著重要的用途,如網(wǎng)絡(luò)多媒體通信等。(4)應(yīng)用層:該層負(fù)責(zé)處理實(shí)際的應(yīng)用程序細(xì)節(jié),包括大家十分熟悉的Telnet(電子公告版),HTTP(World Wide Web服務(wù)),SMTP(簡(jiǎn)單郵件傳輸協(xié)議),
4、FTP(簡(jiǎn)單文件傳輸協(xié)議)和SNMP(簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)等著名協(xié)議。Web服務(wù)器Web服務(wù)器http協(xié)議TCPTCPtcp協(xié)議IPIPIPIp協(xié)議Ip協(xié)議以太網(wǎng)驅(qū)動(dòng)程序以太網(wǎng)驅(qū)動(dòng)程序令牌環(huán)網(wǎng)驅(qū)動(dòng)程序令牌環(huán)網(wǎng)驅(qū)動(dòng)程序令牌環(huán)路由器以太網(wǎng)2.2 winsock網(wǎng)絡(luò)編程技術(shù) 由于Winsock的服務(wù)是以動(dòng)態(tài)鏈接庫(kù)Winsock Dll形式實(shí)現(xiàn)的,所以必須先調(diào)用WSAStartup函數(shù)對(duì)Winsoc Dll進(jìn)行初始化,協(xié)商Winsock的版本支持,并分配必要的資源。如果在調(diào)用Winsock函數(shù)之前,沒(méi)有加載winsock庫(kù),則會(huì)返回SOCKET_ERROR錯(cuò)誤,在應(yīng)用程序關(guān)閉套接字后,還應(yīng)調(diào)用WSACl
5、eanup函數(shù)終止對(duì)Winsock Dll的使用,并釋放資源,以備下次使用.2.2.2 錯(cuò)誤檢查和控制: 錯(cuò)誤檢查和控制對(duì)于Winsock應(yīng)用程序是至關(guān)重要的,不成功的Winsock調(diào)用返回的最常見(jiàn)的值是SOCKET_ERROR,它是值為-1的常量。如果錯(cuò)誤發(fā)生了,可以用WSAGetLastError函數(shù)來(lái)獲得一段代碼,這段代碼明確地表明錯(cuò)誤的原因。:2.2.1 Winsock的啟動(dòng)和終止:2.2.3 Winsock編程模型: socket()服務(wù)器bind()listen()accept()阻塞,等待客戶(hù)數(shù)connect()socket()客戶(hù)機(jī)建立連接write()read()請(qǐng)求數(shù)據(jù)處理
6、服務(wù)請(qǐng)求write()read()應(yīng)答數(shù)據(jù)close()close()2.3.1 多線程技術(shù)介紹:2.3 windows多線程編程技術(shù) 在Windows的一個(gè)進(jìn)程內(nèi),包含一個(gè)或多個(gè)線程,線程是指進(jìn)程的一條執(zhí)行路徑,它包含獨(dú)立的堆棧和CPU寄存器狀態(tài),每個(gè)線程共享所有的進(jìn)程資源,包括打開(kāi)的文件,信號(hào)標(biāo)識(shí)及動(dòng)態(tài)分配的內(nèi)存等等,一個(gè)進(jìn)程的所有線程使用同一個(gè)32位地址空間,而這些線程的執(zhí)行由系統(tǒng)調(diào)度程序控制,調(diào)度程序決定哪個(gè)線程可執(zhí)行以及什么時(shí)候執(zhí)行。線程具有優(yōu)先級(jí)別,優(yōu)先權(quán)低的線程必須等到優(yōu)先權(quán)較高的線程執(zhí)行完任務(wù)后再執(zhí)行,在多處理器的機(jī)器上,調(diào)度程序可將多個(gè)線程放到不同的處理器上去運(yùn)行,這樣就可使
7、處理器的任務(wù)平衡,也提高了系統(tǒng)的效率。進(jìn)程的主線程在任何需要的時(shí)候都可以創(chuàng)建新的線程,當(dāng)線程執(zhí)行完任務(wù)后,自動(dòng)終止線程,當(dāng)進(jìn)程結(jié)束后,所有的線程都終止。2.3.2線程的創(chuàng)建和終止線程: Win32函數(shù)庫(kù)中提供了多線程控制的操作函數(shù),包括創(chuàng)建線程、終止線程、建立互斥區(qū)等。首先,在應(yīng)用程序的主線程或其他活動(dòng)線程的適當(dāng)?shù)胤絼?chuàng)建新的線程,創(chuàng)建了新線程后,則該線程就開(kāi)始啟動(dòng)執(zhí)行了當(dāng)線程函數(shù)返回后,線程自動(dòng)終止,如果線程在執(zhí)行中終止的話,則可以調(diào)用函數(shù)實(shí)現(xiàn),相關(guān)函數(shù)等請(qǐng)查看論文3 SMTP服務(wù)器概要設(shè)計(jì)3.1本服務(wù)器實(shí)現(xiàn)的命令集:HELO,MAIL FROM,RCPT TO,DATA,RSET,NOOP,
8、QUIT,HELP3.2 SMTP服務(wù)器工作流程圖:smtp服務(wù)器主線程開(kāi)啟端口25,開(kāi)始監(jiān)聽(tīng)一個(gè)客戶(hù)發(fā)起連接請(qǐng)求要求服務(wù)服務(wù)器開(kāi)啟一個(gè)新線程為該客戶(hù)服務(wù)是否已經(jīng)達(dá)到最大連接數(shù)MAX_CONNECTION_NUM否向該用戶(hù)發(fā)送連接數(shù)過(guò)多信息,并關(guān)閉相應(yīng)連接是3.2.1 SMTP服務(wù)器主線程流程:3.2.2 SMTP服務(wù)器客戶(hù)服務(wù)線程流程:獲得客戶(hù)服務(wù)id號(hào)根據(jù)id號(hào)將客戶(hù)登錄信息記入System.log日志文件讀取客戶(hù)發(fā)送命令并處理命令返回客戶(hù)處理結(jié)果3.2.3 SMTP服務(wù)器客戶(hù)端命令處理流程:讀入客戶(hù)輸入的第一條命令是HELO嗎響應(yīng)503,并讀入下條命令不是響應(yīng)250歡迎信息處理MAIL
9、FROM命令否下條命令為MAIL FROM?是下條命令為RCPT TO?是處理RCPT TO命令否下條命令為DATA?是處理DATA命令下條命令為REST?是處理REST命令下條命令為NOOP?下條命令為HELP?下條命令為QUIT?處理NOOP命令是處理HELP命令是否否否否是處理QUIT命令向客戶(hù)輸出502 命令不可實(shí)現(xiàn),并讀入下條信息3.2.3 SMTP服務(wù)器各個(gè)命令詳細(xì)處理流程:(見(jiàn)論文)4 POP3服務(wù)器概要設(shè)計(jì)4.1本服務(wù)器實(shí)現(xiàn)的命令集: USER PASS DELE LIST LOOP RETR RSET STAT UIDL QUIT4.2 pop3服務(wù)器工作流程圖:pop3服務(wù)
10、器主線程開(kāi)啟端口110,開(kāi)始監(jiān)聽(tīng)一個(gè)客戶(hù)發(fā)起連接請(qǐng)求要求服務(wù)4.2.1 pop3服務(wù)器主線程流程圖:服務(wù)器開(kāi)啟一個(gè)新線程為該客戶(hù)服務(wù)是否已經(jīng)達(dá)到最大連接數(shù)MAX_CONNECTION_NUM否向該用戶(hù)發(fā)送連接數(shù)過(guò)多信息,并關(guān)閉相應(yīng)連接是4.2.2 pop3服務(wù)器客戶(hù)服務(wù)線程流程:獲得客戶(hù)服務(wù)id號(hào)根據(jù)id號(hào)將客戶(hù)登錄信息記入System.log日志文件讀取客戶(hù)發(fā)送命令并處理命令返回客戶(hù)處理結(jié)果4.2.3 pop3服務(wù)器客戶(hù)端命令處理流程:讀入客戶(hù)輸入的下一條命令處理USER命令否命令為USER?是命令為PASS?是處理PASS命令否命令為STAT?是處理STAT命令命令為DELE?是處理DEL
11、E命令命令為L(zhǎng)IST命令為RETR處理LIST命令是處理RETR命令是否否否否命令為RSET?處理RSET命令向客戶(hù)輸出命令不可實(shí)現(xiàn)命令為UIDL命令為L(zhǎng)OOP?命令為QUTI?處理UIDL命令是是是處理LOOP命令處理QUIT命令否否否否是命令為RSET?4.2.3 pop3服務(wù)器各個(gè)命令詳細(xì)處理流程:(見(jiàn)論文)5 SMTP服務(wù)器和POP3服務(wù)器詳細(xì)設(shè)計(jì)(見(jiàn)論文)6 測(cè)試6.1 c語(yǔ)言編寫(xiě)的測(cè)試程序6.1.1 SMTP服務(wù)器簡(jiǎn)單測(cè)試程序(1)建立和SMTP服務(wù)器連接(2)發(fā)送HELO命令并讀取服務(wù)器響應(yīng)信息(3)發(fā)送MAIL FROM命令并回顯服務(wù)器返回信息(4)發(fā)送RCPT TO命令并回顯服務(wù)器返回信息(5)發(fā)送DATA命令通知(6)發(fā)送郵件正文并回顯服務(wù)器信息(7)發(fā)送QUIT命令結(jié)束和服務(wù)器的會(huì)話(8)SMTP測(cè)試程序命令行顯示結(jié)果6.1.2 POP3服務(wù)器測(cè)試程序(1)建立和POP3服務(wù)器的連接(10)POP3服務(wù)器測(cè)試程序命令行運(yùn)行效果(9)發(fā)送”QUIT”命令并回顯服務(wù)器信息(8)發(fā)送”DELE 1”并回顯服務(wù)器信息(7)發(fā)送”RETR 1”并回顯服務(wù)器信息(6)發(fā)送”LIST 1”并回顯服務(wù)器信息(5)發(fā)送”LIST”命令并回顯服務(wù)器信息(4)發(fā)送”STAT”命令并回顯服務(wù)器信息(3)發(fā)送”P(pán)ASS 198517”命令并回顯服
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 伊犁防腐木廊架施工方案
- 電鍍?cè)O(shè)備銷(xiāo)售合同
- 骨科護(hù)士工作計(jì)劃2025年3
- 山西側(cè)面發(fā)光字施工方案
- 經(jīng)濟(jì)學(xué)院一季度安全事故應(yīng)急預(yù)案
- 屋面彩鋼倒扣瓦施工方案
- 醫(yī)院安全生產(chǎn)培訓(xùn)安全講座
- 南京電熱膜地暖施工方案
- 臨床藥師上半年工作總結(jié)
- 新水土保持工作計(jì)劃
- 2023南方國(guó)家電網(wǎng)招聘筆試參考題庫(kù)(共500題)答案詳解版
- 快手申訴文本
- 重癥患者早期康復(fù)的研究進(jìn)展
- 商鋪?zhàn)赓U合同(有利于承租方)
- 異丁烷脫氫項(xiàng)目可行性研究報(bào)告
- 廣東外語(yǔ)外貿(mào)大學(xué)會(huì)計(jì)專(zhuān)碩復(fù)試
- 行政處罰案件集體討論審理記錄
- 變電站綜合自動(dòng)化
- 德語(yǔ)現(xiàn)代主義文學(xué)-浙江大學(xué)中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
- 2022年安徽省公務(wù)員錄用考試《行測(cè)》真題及答案
- 2023年高中音樂(lè)課件大宅門(mén)-電視劇《大宅門(mén)》主題歌
評(píng)論
0/150
提交評(píng)論