本科毕业设计论文--pop3邮件客户端课程设计

上传人:沈*** 文档编号:206361657 上传时间:2023-05-03 格式:DOC 页数:30 大小:2.05MB
收藏 版权申诉 举报 下载
本科毕业设计论文--pop3邮件客户端课程设计_第1页
第1页 / 共30页
本科毕业设计论文--pop3邮件客户端课程设计_第2页
第2页 / 共30页
本科毕业设计论文--pop3邮件客户端课程设计_第3页
第3页 / 共30页
资源描述:

《本科毕业设计论文--pop3邮件客户端课程设计》由会员分享,可在线阅读,更多相关《本科毕业设计论文--pop3邮件客户端课程设计(30页珍藏版)》请在装配图网上搜索。

1、青海民族大学课程设计报告课程类别: 本科 课程名称: TCP/IP协议原理课程设计 课程代号: XXXXXX 指导教师: 昝风彪POP3邮件客户端姓名:卢国祥学号:1410030010院系:计算机学院专业:网络工程班级:14网本课程设计报告提交时间:2016 年 12月 日目 录1课程设计内容12课程设计要求12.1功能要求13概要设计13.1功能模块图13.2功能模块描述14详细设计24.1功能流程图24.2重点设计25测试与调试26心得体会2参考文献2ITCP/IP协议原理课程设计报告 XXXXPOP3邮件客户端1 课程设计内容设计并实现POP3邮件客户端系统,要求能够向POP服务器发送命

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

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

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

5、的电子协议。它是Internet电子邮件的第一个离线协议标准,pop3允许用户从服务器上把邮件存储到本地主机上,同时删除保存在邮件服务器上的邮件,而pop3服务器则是遵循pop3协议的接收邮件服务器,用来接收电子邮件。2.5 实验步骤1、 新建MFC程序,选择合适的位置保存工程项目;2、 绘制MFC程序界面,熟悉所使用的控件。3、 定义控件所对应的变量。4、 编写程序的功能实现部分代码,并调试运行。5、 分析实验结果,编写课程设计文档。3 概要设计3.1 功能模块图3.2 功能模块描述1) 与现有服务器的连接2) 用户从邮件服务器上下载邮件到本地主机上4 详细设计4.1 功能流程图4.2 重点

6、设计 实现步骤1. 在visual中创建一个工程2.设计基于对话框的图形界面,添加组件和按钮步骤3先在MailClientDlg.h中添加如下全局变量:#define MAX_SIZE 65535再在MailClientDlg类中添加如下私有成员:bool RecvRespond();bool SendCommanf();char CommandMAX_SIZE;char RespondMAX_SIZE;bool RespondStatue;SOCKET Socket;再按Ctrl+W进入MFC ClassWizard,选择Member Variable,为控件添加成员变量,如图所示步骤4:在

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

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

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

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

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

12、ndef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CMailClientlg : public CDialogpublic:/AFX_DATA(CMailClientlg)enum IDD = IDD_ABOUTBOX ;enmuIDD=IDD_MAILCLIENT_DIALOG;CString m_Address;CString m_Login;CString m_Mail;CString m_Password;CString m_Account;/AFX

13、_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTprotected:/AFX_MSG(CAboutDlg)afx_msg void OnConnect();afx_msg void OnQuit();afx_msg void OnRecevice();adx_mag void Ondelete();/AFX_MSGDEC

14、LARE_MESSAGE_MAP()private:bool RecvRespond();bool SendCommand();char CommandMAX_SIZE;char RespondMAX_SIZE;bool RespondStatue;SOCKET Socket;/MailClientDlg.cpp:imlementation file#include stdafx.h#include MailnClient.h#include MailnClientlg.h#include winsock.hvoid CMailClientDlg:OnConnect()UpdataData(t

15、rue);WSADATA WSAData;if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0)MessageBox(初始化Winsock失败!);return;Socket=socket(AF_INET,SOCK_STREAM,0);if(Socket=INVAID_SOCKET) MessageBox(创建Socket失败!); WSACleanup(); return;int IpAddress;IpAddress=inet_addr(m_Address);if(IpAddress=INADDR_NONE) hostent * pHostent=gethost

16、byname(m_Address); if(pHostent) IpAddress(*(in_addr*)pHostent-h_addr).s_addr;sockaddr_in serveraddr;memset(&severaddr,0,sizeof(severaddr);severaddr.sin_family=AF_INET;severaddr.sin_port=htons(110);severaddr.sin_addr.s_addr=IpAddress;int nConnect;nConnect=connect(Socket,(sockaddr*)&severaddr,sizeof(s

17、everaddr);if(nConnect=SOCKET_ERROR) MessageBox(链接建立失败!); closesocket(socket); WSACleanup(); return;m_Login+=Client: Connect to;m_Login+=m_Address;m_Login+=.rn;if(!RecvRespond() return;elseif(!RecvRespond()m_Login+=Sever: ;m_Login+=Respond;elseMessageBox(链接响应错误!);closesocket(Socket);WSACleanup();retu

18、rn;memset(Command,0,MAX_SIZE);memcpy(Command,USER,strlen(USER );memcpy(Command+strlen(USER),m_Account,strlen(m_Account);memcpy(Command+strlen(USER)+strlen(m_Account),rn,2);if(!SendCommand() return;m_Login+=Client:;m_Login+=Command;if(!RecvRespond() return;elseif (RespondStatue=true)m_Login+=Servere:

19、;m_Login+=Respond; else MesssageBox(USER响应错误!);closesocket(Socket);WSACleanup();return;memset(Command,0MAX_SIZE);memcpy(Command,PASS,strlen(PASS);memcpy(Command+strlen(PASS),m_Password,strlen(m_Password);memcpy(Command+strlen(PASS)+strlen(m_Password),rn,2);if(!SendCommand(); return; m_Login+=Client:

20、PASS*rn; if(RecvRespond() return; else if(RespondStatue=true) m_Login+=Server; m_Login+=Respond; else MessageBox(PASS响应错误!); closesocket(Socket); WSACleanup(); return; UpdateData(false);void CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAP

21、BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CMailClientDlg dialogCMailClientDlg:CMailClientDlg(CWnd* pParent /*=NULL*/): CDialog(CMailClientDlg:IDD, pParent)/AFX_DATA_INIT(CMailClientDlg)m_Mail = _T();m_address = _T();m_Login = _T()

22、;m_password = _T();m_Account = _T();/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CMailClientDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CMailClientDlg)DDX_Text(pDX, IDC_EDIT

23、3, m_Mail);DDX_Text(pDX, IDC_EDIT1, m_address);DDX_Text(pDX, IDC_EDIT10, m_Login);DDX_Text(pDX, IDC_EDIT4, m_password);DDX_Text(pDX, IDC_EDIT9, m_Account);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CMailClientDlg, CDialog)/AFX_MSG_MAP(CMailClientDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_LBN_SEL

24、CHANGE(IDC_LIST4, On)ON_BN_CLICKED(IDC_BUTTON2, OnConnect)ON_BN_CLICKED(IDC_BUTTON5, OnQuit)ON_BN_CLICKED(IDC_BUTTON3, OnReceive)ON_BN_CLICKED(IDC_BUTTON4, Ondelete)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CMailClientDlg message handlersBOOL CMailClientDlg:OnInitDialog()CDialog:OnInitDialog();/ Add About. men

25、u item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when t

26、he applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization herereturn TRUE; / return TRUE unless you set the focus to a controlvoid CMailClientDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = ID

27、M_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);/ If you add a minimize button to your dialog, you will need the code below/ to draw the icon. For MFC applications using the document/view model,/ this is automatically done for you by the framework.void CMailCli

28、entDlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.

29、Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();/ The system calls this to obtain the cursor to display while the user drags/ the minimized window.HCURSOR CMailClientDlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;void

30、CMailClientDlg:On() / TODO: Add your control notification handler code herevoid CMailClientDlg:OnConnect() UPdateData(true);WSADATA WSAData;/ TODO: Add your control notification handler code herevoid CMailClientDlg:OnQuit() / TODO: Add your control notification handler code herememset(Command,0,MAX_

31、SIZE);memcpy(Command,QUIT,strlen(QUIT);memcpy(Command+strlen(QUIT),rn,2);if(!SendCommand)return;m_Login+=Client;m_Login+=Command;if(!RecvRespond()return;else if(RespondStatue=true)m_Login+=Server:; m_Login+=Respond;m_Mail=;else MessageBox(QUIT响应错误!); closesocket(Socket); WSACleanup(); return;UpdateD

32、ate(false);closesocket(Socket);WSACleanup();bool CMailentDlg:RecvRespond() int nRecv; memset(Respond,0,MAX_SIZE); nRecv=recv(Socket,Respond,MAX_SIZE,0); if(Recv=SOCKET_ERROR) MessageBox(Socket接收失败!); closesocket(Socket); return false; if(memamp(Respond,+OK,3)=0) RespondStatue=true; else RespondStatu

33、e=false; return true;bool CMailClientDlg:SendCommand()int nSend;nSend=send(Socket,Command,strlen(Command),0);if(nSend=SOCKET_ERROR)MessageBox(Socket发送失败!);closesocket(Socket);WSACleanup();return false;return true;void CMailClientDlg:OnReceive() / TODO: Add your control notification handler code here

34、memset(Command,0,MAX_SIZE);memcpy(Command+strlen(STAT),rn,2)if(!SendCommand()return;m_Login+=Client: ;m+Login+=Command;if(!RecvRespond()return;elseif(RespondStatue=true)m_Login+=Sever: ;m_Login+=Respond;elseMessageBox(STAT响应错误!);WSACleanup();return;memset(Command,0,MAX_SIZE);memcpy(Command,RETR,strl

35、en(RETR);memcpy(Command+strLen(RETR),rn,3);if(!SendCommand()return;m_Login+=Client: ;m_LOgin+=Command;if(!RecvRespond()return;elseif(RespondStatue=ture)m_Login+=sever: ;m_Login+=Respond;elseMessageBox(RETR响应错误!);closesocket(Socket);WSACleanup();return;while(true)char MailBufMAX_Size;memset(MailBuf,0

36、,MAX_SIZE,0);int nRecv; nRecv=recv(Socket,MailBUf,MAX_SIZE,0); if(nRecv=SOCKET_ERROR) MessageBox(RETR接收错误!); closesocket(Socket); WSACleanup(); return; m_Mail+=MailBuf; if(strstr(MailBuf,rn.rn) break; UpdateData(false);void CMailClientDlg:Ondelete() / TODO: Add your control notification handler code

37、 herememset(Command,0,MAX_SIZE);memcpy(Command,DELE,strlen(DELE );memcpy(Command+strlen(DELE ),1rn,3);if(!OnSendCommand()return;m_Login+=Client: ;m_Login+=Command;of(!RecvRespond()return;elseif(RespondStatue=true)m_Login+=Server: m_Login+=Respond;elseMessageBox(DELE响应错误!);return;UpdateData(false);cl

38、osesocket(Socket);WSACleanup(); 参考文献1 谭浩强. C程序设计(第4版). 清华大学出版社, 2010.2 苏小红. C语言程序设计(第1版). 高等教育出版社, 2011.3 (美)H.M.Deitel & P.J.Deitel. C程序设计教程. 机械工业出版社, 2005.4 朱岩、高伟 编著 标准Windows程序设计Visual C+与MFC及Win32API的应用,1997,北京,人民邮电出版社。5 李博轩等 著 Visual C+6.0网络及Internet开发指南,2008,北京,清华大学出版社。6 孙飞显 著,TCP/IP网络编程技术 2014 北京 国防工业出版社。28

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!