

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、青海民族大学课程设计报告青海民族大学课程设计报告课程类别课程类别:本科本科课程名称课程名称:TCP/IP 协议原理课程设计协议原理课程设计课程代号课程代号:XXXXXX指导教师指导教师:昝风彪昝风彪POP3邮件客户端邮件客户端姓名姓名:卢国祥卢国祥学号学号:1410030010院系院系:计算机学院计算机学院专业专业:网络工程网络工程班级班级:14 网本网本课程设计报告提交时间:课程设计报告提交时间:2016年年12月日月日I目录目录1课程设计内容12课程设计要求12.1 功能要求 13概要设计33.1 功能模块图 33.2 功能模块描述 44详细设计54.1 功能流程图 54.2 重点设计 7
2、5测试与调试116心得体会13参考文献28TCP/IP 协议原理课程设计报告XXXX1POP3POP3邮件客户端邮件客户端1 1 课程设计内容课程设计内容设计并实现POP3 邮件客户端系统,要求能够向 POP 服务器发送命令,并接受 POP 服务器返回的响应和数据,程序设计具备以下功能模块:(1) 功能模块 1 要求实现的程序为图形化界面, 可以输入 POP 服务的相关信息 (包括 POP 服务器名、用户和密码),输出交互过程中的 POP 命令与响应信息,以及从 POP 服务器的制定邮箱中获得的邮件信息。(2)功能模块 2 要求遵循 RFC1939 的相关 POP3 协议规定可以登录到任意一个
3、标准的 POP3 服务器。 只要求实现 USER、 PASS、 STAT、 RETR、 DELE 和 QUIT命令。点击链接按钮,实现 USER 与 PASS 命令;单机删除按钮,实现 DELE命令;单击退出按钮,实现 QUIT 命令。2 2 课程设计要求课程设计要求2.1 设计要求设计要求(1)要求有良好的编程规范与详细的注释信息。(2)要求有详细的说明文档,包括程序的设计思想、工作流程、关键问题等。(3)要求在 Windows 操作系统环境中,建议使用 VisualC+编程工具实现。2.2 功能要求功能要求所设计的的程序经调试后能与现有的邮件服务器系统(如:163、126、sina、soh
4、u、QQ)等进行通信,并能查看邮件服务器上的邮件并下载到本机上。2.3 设计平台介绍设计平台介绍VC+是微软公司开发的一个IDE(集成开发环境),换句话说就是使用C+的一个开发平台。VC+是Windows平台上的C+编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较大,Windows下编程需要了解其消息机制以及回调(callback)函数的原理,MFC是Win32API的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等。MFC是VisualC+进行开发的TCP/IP 协议原理课程设计报告XXXX2一种主要模式。2.4POP3 协议
5、协议POPPOP 邮局协议邮局协议负责从邮件服务器中检索电子邮件。它要求邮件服务器完成下面几种任务:从邮件服务器中检索邮件并从服务器中删除这个邮件;从邮件服务器中检索邮件但不删除它;不检索邮件,只是询问是否有新邮件到达。Pop 协议支持多用户互联网邮件扩展,实际上这样就可以传输任何格式的文件。Pop3Pop3 协议协议即邮局协议的第三个版本,它规定怎样将个人计算机连接到 Internet 的邮件服务器和下载电子邮件的电子协议。它是 Internet 电子邮件的第一个离线协议标准,pop3 允许用户从服务器上把邮件存储到本地主机上,同时删除保存在邮件服务器上的邮件,而 pop3 服务器则是遵循
6、pop3 协议的接收邮件服务器,用来接收电子邮件。2.5 实验步骤实验步骤1、新建MFC程序,选择合适的位置保存工程项目;2、绘制MFC程序界面,熟悉所使用的控件。3、定义控件所对应的变量。4、编写程序的功能实现部分代码,并调试运行。5、分析实验结果,编写课程设计文档。TCP/IP 协议原理课程设计报告XXXX33 3 概要设计概要设计3.1 功能模块图功能模块图初始化连接和服务器问侯初始化连接和服务器问侯认态理态新态确状处状更状验证失败注销并关闭连接注销并关闭连接TCP/IP 协议原理课程设计报告XXXX43.2 功能模块描述功能模块描述1)与现有服务器的连接2)用户从邮件服务器上下载邮件到
7、本地主机上TCP/IP 协议原理课程设计报告XXXX54 4详细设计详细设计4.1 功能流程图功能流程图TCP/IP 协议原理课程设计报告XXXX6TCP/IP 协议原理课程设计报告XXXX74.24.2重点设计重点设计实现步骤1.在 visual 中创建一个工程丈肌巳IESW曲H典JiTjffifE?範it卅I工良CD星口锻)碗H含/d4电|耳丁业|口固衬%|花|3_dl3、-境ATL心阳卯即;1士丘ChntziFEIWIEETvficWleniEu再wiicjiwmmIMibbhseM|e*s*UcwiilHdMAdd-Wijaad甜E如屮別袖FixhfilEMPIExknilsiijin
8、JItaJikfcewCrw*IW1244i文祥115|工祚直|耳它丈甘|u述丹WilmUilhiyhTCP/IP 协议原理课程设计报告XXXX10SBkiLCIeni:l-viws1C+Hlz觅辰衣叶&SW头文怜|u4LCB!EIh|NaiLL:lKin.Ep|2.设计基于对话框的图形界面,添加组件和按钮TCP/IP 协议原理课程设计报告XXXX11丈肌巳SS:E)皱砂価TtE7itl布戦1; TWdl屋側孤就也AtfB0口闔啻二曲步骤3先在MailClientDlg.h中添加如下全局变量:#defineMAX_SIZE65535再在MailClientDlg类中添加如下私有成员bo
9、olRecvRespond();boolSendCommanf();charCommandMAX_SIZE;charRespondMAX_SIZE;boolRespondStatue;SOCKETSocket;-_jMsll,二1创旳F2JIWB+ThlWfi+n 电却三;1-“芯霊弓 fc!习 MdiLdlwil.rc-ro.MAlCLENTl.COALDGi:laoq|鼻MpLCIienllVis丈肌巳SS:E)皱砂価TtE7itl布戦1;工黒0屋口側孤就貝1CklibilcirOlf|jMJlLU Hiw bcrai|.g.bgilnrOli-_jMeliriipilff二1创旳RLJU
10、MN-3电却Fi_fServerfrnB*H刑蝴戸占!lffiTCP/IP 协议原理课程设计报告XXXX12再按Ctrl+W进入MFCClassWizard,选择MemberVariable,为控件添加成员变量,如图所示步骤4:在资源视图中选择对话框,双击“链接”按钮,为之创建响应函数OnConnect(),双击“接收”按钮,为之创建响应函数OnReceive(),双击“删除”按钮,为之创建响应函数OnDelete()。双击“退出”按钮,为之创建响应函数OnQuit().步骤5:添加相关代码。5 5测试与调试测试与调试5.15.1 测试目的测试目的检查POP3邮件客户端程序是否能够与现有的邮件
11、服务器如:163、QQ进行通信,是否从邮件服务器上下载邮件到本地主机上。5.25.2 测试环境测试环境WinXP系统visualC+6.05.35.3 测试结果测试结果客户端建立之后,连接国内现有的服务器系统,证明能够与主流服务器系统进行通信,具体的通信界面如下图所示与服务器取得联系之后,对目标邮件进行下载接收,证明邮件可以正常下载到本地主机,具体的接收界面如下图所示。TCP/IP 协议原理课程设计报告XXXX13POPServerkidrsE?P*P-163comInformationClient;CQiuiecttopop.J63.cor.&rvtr*買cletiHdtasnoii
12、1MLIIP*p3Sarvar(tG3CamS4:CliantlUSERfuqijjgjninSftrv&r:+DKcaremaLlInform*irinFrom:5Ldo.conservicfQlctOCam?lQwrn-PatK:个訴1ut、cqhTc:UQingniiA163.cmD毗色:T卍”1Sep2fll?02:02:27+C8D0MIME-VrsiMi:L.Oro?ClientVI0tycxidiEEiiin5.45.4 结果分析结果分析经过测试,该邮件客户端各个功能均能实现,POP3端口能与国内现有的主流服务器系统(如:163、126、sina、sohu、QQ)等进行通
13、信,并能查看邮件服务器上的邮件并下载到本机上。此次邮件客户端设计成功。6 6出现的问题及解决方法出现的问题及解决方法6.16.1 设计中出现的问题设计中出现的问题1)设计初没有接触尝试过相似系统的设计;2)设计时编写程序不是很顺利;3)调试程序时出现很多错误;4)软件界面过于简洁。6.26.2 解决方法解决方法1)找来相关资料,经过本小组的一番讨论研究,对该邮件客户端有了较清晰的认识,才开始着手于正式设计。2)经过一段时间的研究,找到了可行的函数模式。3)不断地耐心调试,直至出现满意的结果。4)经过相应的修改,终于达到了较好的效果。AccountPMord*#*T+*RC4ivdQuitTCP
14、/IP 协议原理课程设计报告XXXX147 7心得体会心得体会7.17.1 总结总结通过此次课程设计对现今流行的邮件系统现状有了一定的了解,针对基本的邮件服务器设计进行了分析,选择了相应的编程语言及相关的协议及技术,通过编程实现简单的邮件的收发,主要完成了以下工作:(1)在明确邮件收发系统的概念及原理的基础上对邮件服务器模块进行整体分析,确定编程思路及大体框架;(2)理解并应用Socket接口及网络编程技术,分析协议通信的整个过程,学会用编程语言实现其功能;(3)对代码中存在的bug进行调试及分析,深入理解服务器与客户端之间的通信过程,及怎样利用协议来实现对话;(4)由于所编写的邮件系统不仅只
15、是给予发送简单的文本信息而已,而且还能够发送添加附件的邮件,所以他有很大的实用性。(5)当然,随着网络技术的飞速发展,邮件服务器系统已经产生了很多功能非常完善的邮件客户端,本客户端只实现了一些基本功能,有些功能需要进一步完善和改进。7.27.2 发展需求发展需求在邮件收发系统能给我们带来很多方便的同时,用户对它的功能需求也在不断的提高,现在通过电子油件传播的病毒很多(大多通过附件传播)。系统该应加入对附件的安全性检查功能,对SMTP,POP,IMTP,LDAP,HTTP可以支持SSL/TLS加密传输,防止网络侦听,通信更安全。为了给生活带来更多的方便,邮箱应该可以和手机绑定,支持短信提醒,有新
16、邮件到达时,可以在手机上获得通知。提供快速设置向导,只需输入几个简单参数,让您一分钟内设置好邮件系统。可以同时发送多个附件,超大附件,提供网络磁盘功能,并且可以设置共享。提供网络记事本服务。8 8 程序清单程序清单源代码:/MailClientDlg.cpp:implementationfile/TCP/IP 协议原理课程设计报告XXXX15#defineMAX_SIZE4096#includestdafx.h#includeMailClient.h#includeMailClientDlg.h#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstat
17、iccharTHIS_FILE=_FILE_;#endif/CAboutDlgdialogusedforAppAboutclassCMailClientlg:publicCDialogpublic:/AFX_DATA(CMailClientlg)enumIDD=IDD_ABOUTBOX;enmuIDD=IDD_MAILCLIENT_DIALOG;CStringm_Address;CStringm_Login;CStringm_Mail;CStringm_Password;CStringm_Account;/AFX_DATA/ClassWizardgeneratedvirtualfunction
18、overrides/AFX_VIRTUAL(CAboutDlg)protected:virtualvoidDoDataExchange(CDataExchange*pDX);/AFX_VIRTprotected:/AFX_MSG(CAboutDlg)afx_msgvoidOnConnect();/DDX/DDVsupportTCP/IP 协议原理课程设计报告XXXX16afx_msgvoidOnQuit();afx_msgvoidOnRecevice();adx_magvoidOndelete();/AFX_MSGDECLARE_MESSAGE_MAP()private:boolRecvRes
19、pond();boolSendCommand();charCommandMAX_SIZE;charRespondMAX_SIZE;boolRespondStatue;SOCKETSocket;/MailClientDlg.cpp:imlementationfile#includestdafx.h#includeMailnClient.h#includeMailnClientlg.h#includewinsock.hvoidCMailClientDlg:OnConnect()UpdataData(true);WSADATAWSAData;if(WSAStartup(MAKEWORD(2,2),&
20、amp;WSAData)!=0)MessageBox(初始化Winsock失败!);return;Socket=socket(AF_INET,SOCK_STREAM,0);if(Socket=INVAID_SOCKET)MessageBox(创建Socket失败!);WSACleanup();return;intIpAddress;TCP/IP 协议原理课程设计报告XXXX17IpAddress=inet_addr(m_Address);if(IpAddress=INADDR_NONE)hostent*pHostent=gethostbyname(m_Address);if(pHostent)
21、IpAddress(*(in_addr*)pHostent-h_addr).s_addr;sockaddr_inserveraddr;memset(&severaddr,0,sizeof(severaddr);severaddr.sin_port=htons(110);severaddr.sin_addr.s_addr=IpAddress;intnConnect;nConnect=connect(Socket,(sockaddr*)&severaddr,sizeof(severaddr);if(nConnect=SOCKET_ERROR)MessageBox(链接建立失败!);
22、closesocket(socket);WSACleanup();return;m_Login+=Client:Connectto;m_Login+=m_Address;m_Login+=.rn;if(!RecvRespond()return;elseif(!RecvRespond()m_Login+=Sever:;m_Login+=Respond;elseMessageBox(链接响应错误!);closesocket(Socket);WSACleanup();return;memset(Command,0,MAX_SIZE);memcpy(Command,USER,strlen(USER);
23、memcpy(Command+strlen(USER),m_Account,strlen(m_Account);memcpy(Command+strlen(USER)+strlen(m_Accseveraddr.sinTCP/IP 协议原理课程设计报告XXXX18ount),rn,2);if(!SendCommand()return;m_Login+=Client:;m_Login+=Command;if(!RecvRespond()return;elseif(RespondStatue=true)m_Login+=Servere:;m_Login+=Respond;elseMesssageB
24、ox(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:PASS*rn;if(RecvRespond()return;else
25、if(RespondStatue=true)m_Login+=Server;m_Login+=Respond;elseMessageBox(PASS响应错误!);TCP/IP 协议原理课程设计报告XXXX19closesocket(Socket);WSACleanup();return;UpdateData(false);voidCAboutDlg:DoDataExchange(CDataExchange*pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDl
26、g,CDialog)/AFX_MSG_MAP(CAboutDlg)TCP/IP协议原理课程设计报告XXXX20/Nomessagehandlers/AFX_MSG_MAPEND_MESSAGE_MAP()/CMailClientDlgdialogCMailClientDlg:CMailClientDlg(CWnd*pParent/*=NULL*/):CDialog(CMailClientDlg:IDD,pParent)/AFX_DATA_INIT(CMailClientDlg)m_Mail=_T();m_address=_T();m_Login=_T();m_password=_T();m_A
27、ccount=_T();/AFX_DATA_INIT/NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32m_hIcon=AfxGetApp()-LoadIcon(IDR_MAINFRAME);voidCMailClientDlg:DoDataExchange(CDataExchange*pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CMailClientDlg)DDX_Text(pDX,IDC_EDIT3,m_Mail);DDX_Text(pDX,IDC_EDIT1,m_addre
28、ss);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_SELcHANGE(iDc_LiST4,On)TCP/IP 协议原理课程设计报告XXXX21ON_BN_c
29、LicKED(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()/cMailclientDlgmessagehandlersBOOLcMailclientDlg:OninitDialog()cDialog:OninitDialog();/AddAbout.menuitemtosystemmenu./iDM_ABOUTBOXmustbein
30、thesystemcommandrange.ASSERT(iDM_ABOUTBOX&0 xFFF0)=iDM_ABOUTBOX);ASSERT(iDM_ABOUTBOXAppendMenu(MF_SEpARATOR);pSysMenu-AppendMenu(MF_STRiNG,iDM_ABOUTBOX,strAboutMenu);/Settheiconforthisdialog.Theframeworkdoesthisautomatically/whentheapplicationsmainwindowisnotadialogSetIcon(m_hIcon,TRUE);/Setbigi
31、conSetIcon(m_hIcon,FALSE);/Setsmallicon/TODO:AddextrainitializationhereTCP/IP协议原理课程设计报告XXXX22returnTRUE;/returnTRUEunlessyousetthefocustoacontrolvoidCMailClientDlg:OnSysCommand(UINTnID,LPARAMlParam)if(nID&0 xFFF0)=IDM_ABOUTBOX)CAboutDlgdlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID,lPa
32、ram);/Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow/todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,/thisisautomaticallydoneforyoubytheframework.voidCMailClientDlg:OnPaint()if(IsIconic()CPaintDCdc(this);/devicecontextforpaintingSendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSaf
33、eHdc(),0);/CentericoninclientrectangleintcxIcon=GetSystemMetrics(SM_CXICON);intcyIcon=GetSystemMetrics(SM_CYICON);CRectrect;GetClientRect(&rect);intx=(rect.Width()-cxIcon+1)/2;inty=(rect.Height()-cyIcon+1)/2;/Drawtheicondc.DrawIcon(x,y,m_hIcon);elseTCP/IP 协议原理课程设计报告XXXX23CDialog:OnPaint();/Thesy
34、stemcallsthistoobtainthecursortodisplaywhiletheuserdrags/theminimizedwindow.HCURSORCMailClientDlg:OnQueryDragIcon()return(HCURSOR)m_hIcon;voidCMailClientDlg:On()/TODO:AddyourcontrolnotificationhandlercodeherevoidCMailClientDlg:OnConnect()UPdateData(true);WSADATAWSAData;/TODO:Addyourcontrolnotificati
35、onhandlercodeherevoidCMailClientDlg:OnQuit()/TODO:Addyourcontrolnotificationhandlercodeherememset(Command,0,MAX_SIZE);memcpy(Command,QUIT,strlen(QUIT);memcpy(Command+strlen(QUIT),rn,2);if(!SendCommand)return;m_Login+=Client;m_Login+=Command;if(!RecvRespond()return;elseif(RespondStatue=true)m_Login+=
36、Server:;TCP/IP 协议原理课程设计报告XXXX24m_Login+=Respond;m_Mail=;elseMessageBox(QUIT响应错误!);closesocket(Socket);WSACleanup();return;UpdateDate(false);closesocket(Socket);WSACleanup();boolCMailentDlg:RecvRespond()intnRecv;memset(Respond,0,MAX_SIZE);nRecv=recv(Socket,Respond,MAX_SIZE,0);if(Recv=SOCKET_ERROR)Mes
37、sageBox(Socket接收失败!);closesocket(Socket);returnfalse;if(memamp(Respond,+OK,3)=0)RespondStatue=true;elseRespondStatue=false;returntrue;boolCMailClientDlg:SendCommand()intnSend;nSend=send(Socket,Command,strlen(Command),0);if(nSend=SOCKET_ERROR)TCP/IP 协议原理课程设计报告XXXX25MessageBox(Socket发送失败!);closesocket
38、(Socket);WSACleanup();returnfalse;returntrue;voidCMailClientDlg:OnReceive()/TODO:Addyourcontrolnotificationhandlercodeherememset(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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年一年级下学期数学《总复习》(教案)
- 六年级下册数学教案-1.4 求比一个数多(少)百分之几的数是多少 青岛版
- 六年级上册数学教案-2.2 圆的周长 ︳西师大版
- 学习2025年雷锋精神六十二周年主题活动实施方案 (3份)-66
- 数学-云南省师范大学附属中学2025届高三下学期开学考试试题和答案
- 2025年度东莞市入学积分制社区教育志愿者服务协议
- 2025年度交通事故人伤私了协议(赔偿期限与方式)
- 二零二五年度医疗机构与康复医院医生合作合同
- 2025年度安保服务满意度调查合同范本
- 二零二五年度白酒品牌授权区域代理及市场拓展合同
- 父母买房在子女名下协议书范本
- DBJ15 31-2016建筑地基基础设计规范(广东省标准)
- 高危新生儿管理专家共识解读
- 《纺织服装材料》课件-0绪论
- 盘扣式卸料平台施工方案
- 绘本故事在小学道德与法治课堂中的有效教学策略分析
- 2024核桃树承包合同
- 保险授权书格式模板
- (完整版)数字电子技术基础教案
- 小回沟矿井3.0Mt-a新建工程变更项目环评
- 胃癌影像诊断(共42张)
评论
0/150
提交评论