完整版)pop3邮件客户端课程设计文档_第1页
完整版)pop3邮件客户端课程设计文档_第2页
完整版)pop3邮件客户端课程设计文档_第3页
完整版)pop3邮件客户端课程设计文档_第4页
完整版)pop3邮件客户端课程设计文档_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、青海民族大学课程设计报告课程类别:本科课程名称:TCP/IP协议原理课程设计课程代号:XXXXXX指导教师:昝风彪POP3邮件客户端姓名:卢国祥学号:1410030010院系:计算机学院专业:网络工程班级:14网本课程设计报告提交时间: 2016 年12月 日目录1 课程设计内容 12 课程设计要求 12.1 功能要求 13 概要设计 33.1 功能模块图 33.2 功能模块描述 44 详细设计 54.1功能流程图 54.2 重点设计 75 测试与调试 116 心得体会 13参考文献 28ITCP/IP协议原理课程设计报告XXXX19POP3邮件客户端1课程设计内容设计并实现POP3邮件客户端

2、 系统,要求能够向 POP服务器发送命令,并接受 POP服务器返回的响应和数据,程序设计具备以下功能模块:(1) 功能模块1要求实现的程序为图形化界面,可以输入POP服务的相关信息(包括 POP服务器名、用户和密码),输出交互过程中的POP命令与响应信息,以及从POP服务器的制定邮箱中获得的邮件信息。(2)功能模块2要求遵循RFC1939的相关POP3协议规定可以登录到任意一个标准的 POP3服务器。只要求实现 USER、PASS、STAT、RETR、 DELE和QUIT命令。点击链接按钮,实现USER与PASS命令;单机删除按钮,实现 DELE命令;单击退出按钮,实现QUIT命令。2课程设计

3、要求2.1设计要求(1)要求有良好的编程规范与详细的注释信息。(2) 要求有详细的说明文档,包括程序的设计思想、 工作流程、关键问题等。(3) 要求在 Windows操作系统环境中,建议使用Visual C+编程工具实现。2.2功能要求所设计的的程序经调试后能与现有的邮件服务器系统(如:163、126、sina、sohu、QQ)等进行通信,并能查看邮件服务器上的邮件并下载到本机上。2.3设计平台介绍VC+是微软公司开发的一个IDE (集成开发环境),换句话说就是使用C+的一个开发平台。VC+是 Windows平台上的 C+编程环境, 学习VC要了解很多 Windows平台 的特性并且还要掌握M

4、FC、ATL、COM等的知识,难度比较大,Windows下编程需要了解其消息机制以及回调(callback )函数的原理,MFC是Win32API的包装类,需要MFC是Visual C+进行开发的理解文档视图类的结构,窗口类的结构,消息流向等。一种主要模式。2.4 POP3 协议pop邮局协议负责从邮件服务器中检索电子邮件。它要求邮件服务器完成下面几种任务:从邮件服务器中检索邮件并从服务器中删除这个邮件;从邮件服务器中检索邮件但 不删除它;不检索邮件,只是询问是否有新邮件到达。Pop协议支持多用户互联网邮件的邮扩展,实际上这样就可以传输任何格式的文件。Pop3协议即邮局协议的第三个版本,它规定

5、怎样将个人计算机连接到In ternet件服务器和下载电子邮件的电子协议。它是In ternet电子邮件的第一个离线协议标准,pop3允许用户从服务器上把邮件存储到本地主机上,同时删除保存在邮件服务器上的邮 件,而pop3服务器则是遵循pop3协议的接收邮件服务器,用来接收电子邮件。2.5实验步骤1、新建MFC程序,选择合适的位置保存工程项目;2、绘制MFC程序界面,熟悉所使用的控件。3、定义控件所对应的变量。4、编写程序的功能实现部分代码,并调试运行。5、分析实验结果,编写课程设计文档。3概要设计3.1功能模块图初始化连接利服务器问侯验证失败认态 理态 新态 确状 处状 更状注销并关闭连接3

6、.2功能模块描述1)与现有服务器的连接2)用户从邮件服务器上下载邮件到本地主机上4详细设计4.1功能流程图开始4.2重点设计实现步骤1.在visual中创建一个工程* 和 1-k I tn*. M l宾啊D WMb Ee H QICD BCUft BO辩*ih 界 0曲復Al收厚2僵II显兰!赍耳住=旳谨百暑-m HA:ii lift - 4Uk ih 工E o. 3邮*2L二Ittft 1劄SBb %仃Xf I whAm&XnUj畑a iA0 TJfT r:闽HA:n IVtfi-) 44) ttl IR-it=叶* fi.7TFtxnsmixaMX sw. Ln* /TT Hit *2.设

7、计基于对话框的图形界面,添加组件和按钮SRI:-忆 MD IH 制出i 幄Ifl BCWJi aa丄UiHlhHril rppnf _J kn taqi T H 织*1 8 MUCLENTT1 WLW (CM卑!口 口u E?TT1- MH 上:it ; TiF5)F JTiKTTT35rr7.,7i 7 ii无ET:百辭HAlD LVte WQI Itu IJi BDWft wf* *二| *叮冲创主9一 dll jIHiditai _J kn+ J 和 Wffc- I声刑FO3 Seftet用氏岂址眄 Utt事出In Bij# .it睨n对诃関m卯佰釘 Tar* i*1LI.話l, 附-1

8、“,1H云削 b tffl 阳*Fd:* 內乜 4鱼54-VMl步骤3先在MailClientDIg.h中添加如下全局变量:#define MAX_SIZE 65535再在MailClientDIg类中添加如下私有成员:bool RecvResp on d();bool Sen dComma nf();char Comma ndMAX_SIZE; char Respo ndMAX_SIZE;bool Resp on dStatue;SOCKET Socket;再按 Ctrl+W 进入 MFC ClassWizard,选择 Member Variable,为控件添加成员变量,如图所示步骤4 :在

9、资源视图中选择对话框,双击“链接”按钮,为之创建响应函数OnConnect(),双击“接收”按钮,为之创建响应函数OnReceive(),双击“删除”按钮,为之创建响应函数OnDelete()。双击“退出”按钮,为之创建响应函数OnQuit().步骤5 :添加相关代码。5测试与调试5.1测试目的检查POP3邮件客户端程序是否能够与现有的邮件服务器如:163、QQ进行通信,是否从邮件服务器上下载邮件到本地主机上。5.2测试环境Win XP 系统 visual C+6.05.3测试结果客户端建立之后,连接国内现有的服务器系统,证明能够与主流服务器系统进行通信,具体的通信界面如下图所示与服务器取得联

10、系之后,对目标邮件进行下载接收,证明邮件可以正常下载 到本地主机,具体的接收界面如下图所示。5.4结果分析经过测试,该邮件客户端各个功能均能实现,POP3端口能与国内现有的主流服务器系统(如:163、126、sina、sohu、QQ )等进行通信,并能查看邮件服务器上的邮件并下载到 本机上。此次邮件客户端设计成功。6出现的问题及解决方法6.1设计中出现的问题1)设计初没有接触尝试过相似系统的设计;2)设计时编写程序不是很顺利;3)调试程序时出现很多错误;4)软件界面过于简洁。6.2解决方法1)找来相关资料,经过本小组的一番讨论研究,对该邮件客户端有了较清晰的认识,才 开始着手于正式设计。2)经

11、过一段时间的研究,找到了可行的函数模式。3 )不断地耐心调试,直至出现满意的结果。4 )经过相应的修改,终于达到了较好的效果。7心得体会7.1总结通过此次课程设计对现今流行的邮件系统现状有了一定的了解,针对基本的邮件服务器设计进行了分析, 选择了相应的编程语言及相关的协议及技术,通过编程实现简单的邮件的收发,主要完成了以下工作:(1 )在明确邮件收发系统的概念及原理的基础上对邮件服务器模块进行整体分析, 确定编程思路及大体框架;(2)理解并应用 Socket接口及网络编程技术,分析协议通信的整个过程,学会用编程语言实现其功能;(3)对代码中存在的 bug进行调试及分析,深入理解服务器与客户端之

12、间的通信过程,及怎样利用协议来实现对话;(4)由于所编写的邮件系统不仅只是给予发送简单的文本信息而已,而且还能够发送添加附件的邮件,所以他有很大的实用性。(5)当然,随着网络技术的飞速发展,邮件服务器系统已经产生了很多功能非常完善的邮件客户端,本客户端只实现了一些基本功能,有些功能需要进一步完善 和改进。7.2发展需求在邮件收发系统能给我们带来很多方便的同时,用户对它的功能需求也在不断的提高,在通过电子油件传播的病毒很多(大多通过附件传播)。系统该应加入对附件的安全性检查功能,对SMTP,POP,IMTP,LDAP,HTTP可以支持 SSL/TLS加密传输,防止网络侦听,通信更安全。为了给生活

13、带来更多的方便,邮箱应该可以和手机绑定,支持短信提醒,有新邮件到达 时,可以在手机上获得通知。提供快速设置向导,只需输入几个简单参数,让您一分钟内设 置好邮件系统。可以同时发送多个附件,超大附件,提供网络磁盘功能,并且可以设置共享。 提供网络记事本服务。8程序清单源代码:/ MailClientDIg.cpp : implementation file /#defi ne MAX_SIZE 4096#i nclude stdafx.h#in clude MailClie nt.h#in clude MailClie ntDIg.h#ifdef _DEBUG#defi ne new DEBUG_

14、NEW#un def THIS_FILEstatic char THIS_FILE = _FILE_;#en dif/ CAboutDlg dialog used for App About class CMailClie ntlg : public CDialogpublic:AFX_DATA(CMailClie ntlg) enum IDD = IDD_ABOUTBOX ;en muIDD=IDD_MAILCLIENT_DIALOG;CStri ng m_Address;CStri ng m_Logi n;CStri ng m_Mail;CStri ng m_Password;CStri

15、ng m_Acco unt;/AFX_DATA/ ClassWizard gen erated virtual fun cti on overridesAFX_VIRTUAL(CAboutDlg)protected:/ DDX/DDV supportvirtual void DoDataExcha nge(CDataExcha nge* pDX);/AFX_VIRTprotected:/AFX_MSG(CAboutDlg)afx_msg void OnConn ect();afx_msg void On Quit();afx_msg void On Recevice();adx_mag voi

16、d On delete();AFX_MSGDECLARE_MESSAGE_MAP()private:bool RecvResp on d();bool Sen dComma nd();char Comma ndMAX_SIZE;char Respo ndMAX_SIZE;bool Resp on dStatue;SOCKET Socket;/MailClientDlg.cpp:imlementation file#include stdafx.h#in clude Mail nClie nt.h#include MailnClientlg.h#in clude win sock.hvoid C

17、MailClie ntDlg:O nConn ect()UpdataData(true);WSADATA WSAData;if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0)MessageBox(初始化 Win sock 失败!); return;Socket=socket(AF_INET,SOCK_STREAM,0);if(Socket=INVAID_SOCKET)MessageBox(创建 Socket 失败!);WSAClea nu p();return;int IpAddress;TCP/IP协议原理课程设计报告XXXXlpAddress=in et_ad

18、dr(m_Address);if(lpAddress=INADDR_NONE)hoste nt * pHoste nt=gethostb yn ame(m_Address);if(pHoste nt)IpAddress(*(i n_addr*)pHoste nt-h_addr).s_addr;sockaddr_ in serveraddr;memset(&severaddr,0,sizeof(severaddr);severaddr.sin_family=AFNET;severaddr.s in _port=ht on s(110);severaddr.s in _addr.s_addr=Ip

19、Address;int nConn ect;nConn ect=c onn ect(Socket,(sockaddr* )&severaddr,sizeof(severaddr);if(n Co nn ect=SOCKET_ERROR)MessageBox(链接建立失败!);closesocket(socket);WSAClea nu p();return;m_Logi n+=Clie nt: C onn ect to;m_Logi n+=m_Address;m_Logi n+=.r n;if(!RecvRespo nd()return;elseif(!RecvResp on d()m_Log

20、i n+=Sever:;m_Logi n+=Resp ond; elseMessageBox(链接响应错误!”);closesocket(Socket);WSAClea nup();return;memset(Comma nd,O,MAX_SIZE);memcpy(Comma nd,USER,strle n(USER );memcpy(Comma nd+strle n(USER),m_Acco un t,strle n(m _Acco un t);memcpy(Comma nd+strle n(USER)+strle n(m_Accou nt),r n,2);if(!Se ndComma nd

21、()return;m_Logi n+=Clie nt:;m_Logi n+=Comma nd;if(!RecvRespo nd()return;elseif (Resp on dStatue=true)m_Logi n+=Servere:;m_Log in+=Resp ond;elseMesssageBox(USER 响应错误!);closesocket(Socket);WSAClea nup();return;memset(Comma nd,OMAX_SIZE);memcpy(Comma nd,PASS,strle n(PASS);memcpy(Comma nd+strle n(PASS),

22、m_Password,strle n(m_Password);memcpy(Comma nd+strle n( PASS)+strle n(m_Password),rn,2);if(!Se ndComma nd();return;m_Logi n+=Clie nt:PASS*rn;if(RecvResp on d()return;elseif(Resp on dStatue=true)m_Logi n+=Server;m_Logi n+=Resp ond;elseMessageBox(PASS 响应错误!);closesocket(Socket);WSAClea nu p();return;U

23、pdateData(false); void CAboutDlg:DoDataExcha nge(CDataExcha nge* pDX) CDialog:DoDataExcha nge(pDX);AFX_DATA_MAP(CAboutDlg)AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)AFX_MSG_MAP(CAboutDlg)/ No message han dlersAFX_MSG_MAPEND_MESSAGE_MAP()/ CMailClie ntDIg dialogCMailClie ntDlg:CMailClie ntDlg(C

24、Wnd* pPare nt /*=NULL*/):CDialog(CMailClientDlg:IDD, pParent)AFX_DATA_INIT(CMailClie ntDIg)m_Mail = _T(”);m_address = _T();m_Logi n = _T();m_password = _T();m_Acco unt = _T();/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIc on = AfxGetApp()-Loadlco n(IDR_MA

25、INFRAME); void CMailClie ntDlg:DoDataExcha nge(CDataExcha nge* pDX) CDialog:DoDataExcha nge(pDX);/AFX_DATA_MAP(CMailClie ntDIg)DDX_Text(pDX, IDC_EDIT3, m_Mail);DDX_Text(pDX, IDC_EDIT1, m_address);DDX_Text(pDX, IDC_EDIT10, m_Logi n);DDX_Text(pDX, IDC_EDIT4, m_password);DDX_Text(pDX, IDC_EDIT9, m_Acco

26、u nt); /AFX_DATA_MAPBEGIN_MESSAGE_MAP(CMailClie ntDIg, CDialog)/AFX_MSG_MAP(CMailClie ntDIg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()0N_LBN_SELCHANGE(IDC_LIST4, On)ON_BN_CLICKED(IDC_BUTTON2, OnConn ect)ON_BN_CLICKED(IDC_BUTTON5, On Quit)ON_BN_CLICKED(IDC_BUTTON3, On Receive)ON_BN_CLICKED(

27、IDC_BUTTON4, On delete)AFX_MSG_MAPEND_MESSAGE_MAP()/ CMailClie ntDIg message han dlersBOOL CMailClie ntDlg:O nlni tDialog()CDialog:O nlni tDialog();/ Add About. menu item to system menu./ IDM_ABOUTBOX must be in the system comma nd ran ge.ASSERT(IDM_ABOUTBOX & OxFFFO) = IDM_ABOUTBOX);ASSERT(IDM_ABOU

28、TBOX Appe ndMe nu(MF_SEPARATOR);pSysMe nu-Appe ndMe nu(MF_STRING, IDM_ABOUTBOX, strAboutMe nu);/ Set the icon for this dialog. The framework does this automatically/when the applications main window is not a dialogSetIco n( m_hIco n, TRUE);/ Set big iconSetIco n( m_hIco n, FALSE);/ Set small icon/ T

29、ODO: Add extra in itializatio n herereturn TRUE; / return TRUEuni ess you set the focus to a con trolvoid CMailClie ntDlg:O nSysComma nd(UINT nID, LPARAM lParam)if (n ID & OxFFFO) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:O nSysComma nd( nID, lParam);/ If you add a mini mize b

30、utt on to your dialog, you will n eed the code below/ to draw the icon.For MFC applicatio ns using the docume nt/view model,/ this is automatically done for you by the framework.void CMailClie ntDlg:O nPai nt()if (IsIco nic()CPaintDC dc(this); / device con text for paintingSen dMessage(WMCONERASEBKG

31、ND, (WPARAM) dc.GetSafeHdc(), 0);/ Cen ter icon in clie nt recta ngleint cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect;GetClie ntRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIc on(x, y,

32、 m_hIc on);elseCDialog:O nPai nt();/ The system calls this to obtain the cursor to display while the user drags/the mi ni mized win dow.HCURSOR CMailClie ntDlg:O nQueryDraglco n()return (HCURSOR) m_hIco n;void CMailClie ntDlg:O n()/ TODO: Add your con trol no tificati on han dler code herevoid CMail

33、Clie ntDlg:O nConn ect()UPdateData(true);WSADATA WSAData;/ TODO: Add your con trol no tificati on han dler code herevoid CMailClie ntDlg:O nQuit()/ TODO: Add your con trol no tificati on han dler code here memset(Comma nd,O,MAX_SIZE);memcpy(Comma nd,QUIT,strle n(QUIT);memcpy(Comma nd+strle n(QUIT),r

34、n,2);if(!Se ndComma nd)return;m_Logi n+=Clie nt;m_Logi n+=Comma nd;if(!RecvResp on d()return;elseif(Resp on dStatue=true)m_Logi n+=Server:;m_Logi n+=Resp ond;m_Mail=;elseMessageBox(QUIT响应错误!);closesocket(Socket);WSAClea nu p();return;UpdateDate(false);closesocket(Socket);WSAClea nup();bool CMaile nt

35、Dlg:RecvRespo nd()int n Recv;memset(Resp on d,O,MAX_SIZE);n Recv=recv(Socket,Resp on d,MAX_SIZE,O);if(Recv=SOCKET_ERROR)MessageBox(Socket 接收失败!”);closesocket(Socket);return false;if(memamp(Resp on d,+OK,3)=O)Resp on dStatue=true;elseResp on dStatue=false;return true;bool CMailClie ntDlg:Se ndComma n

36、d()int nSend;nSen d=se nd(Socket,Comma nd,strle n(Comma nd),0);if(nSen d=SOCKET_ERROR)MessageBox(Socket 发送失败!);closesocket(Socket);WSAClea nup();return false;return true;void CMailClie ntDlg:O nReceive()/ TODO: Add your con trol no tificati on han dler code here memset(Comma nd,O,MAX_SIZE);memcpy(Comma nd+strle n(STAT),r n ,2)if(!Se ndComma nd()return;m_Logi n+=Clie nt:;m+Logi n+=Comma nd;if(!RecvRespo nd()return;elseif(Resp on dStatue=true)m_Log in+=Sever:;m_Log in+=Resp ond;elseMessageBox(STAT 响应错误!); WSAClea nup();return;memset(Comma nd,O,MAX_SIZE);memcpy(Comma nd,RETR,strle n(RETR)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论