好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

计算机网络课程设计报告利用C实现SMTP协议.doc

34页
  • 卖家[上传人]:鲁**
  • 文档编号:422105679
  • 上传时间:2023-05-28
  • 文档格式:DOC
  • 文档大小:291.50KB
  • / 34 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 计算机网络课程设计报告利用C++实现SMTP协议系 别电子信息系专业名称计算机科学与技术班级学号学生姓名指导教师成 绩2011年 7月 12日第 1 页 东北大学秦皇岛分校课程设计 利用C++实现SMTP协议1.概述SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,是一种提供可靠且有效电子邮件传输的协议SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供与来信有关的通知SMTP目前已是事实上的在Internet传输E-Mail的标准,是一个相对简单的基于文本的协议在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确定是存在的),然后消息文本就传输了可以很简单地通过Telnet程序来测试一个SMTP服务器,SMTP使用TCP端口25要为一个给定的域名决定一个SMTP服务器,需要使用MX(Mail eXchange)DNS。

      1.1设计题目及实现目标设计题目:利用C++实现SMTP协议;实现目标:实现SMTP协议的基本功能,包括客户机的命令与数据1.2开发环境简介 本次开发用Visual C++ 6.0作为开发环境 VC++是微软公司开发的一个IDE(集成开发环境),换句话说,就是使用c++的一个开发平台.有些软件就是这个编出来的...另外还有VB,VF.只是使用不同语言.但是,vc++是Windows平台上的C++编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较大Windows下编程需要了解Windows的消息机制以及回调(callback)函数的原理;MFC是Win32API的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等等;COM是代码共享的二进制标准,需要掌握其基本原理等等VC作为一个主流的开发平台一直深受编程爱好者的喜爱,但是很多人却对它的入门感到难于上青天,究其原因主要是大家对他错误的认识造成的,严格的来说 VC++不是门语言,虽然它和C++之间有密切的关系,如果形象点比喻的话,可以C++看作为一种”工业标准”,而VC++则是某种操作系统平台下的”厂商标准”,而”厂商标准”是在遵循”工业标准”的前提下扩展而来的。

      VC++应用程序的开发主要有两种模式2.系统设计分析2.1 协议分析SMTP 独立于特定的传输子系统,且只需要可靠有序的数据流信道支持 SMTP 重要特性之一是其能跨越网络传输邮件,即“ SMTP 邮件中继”通常, 一个网络可以由公用互联网上 TCP 可相互访问的主机、防火墙分隔的 TCP/IP 网络上 TCP 可相互访问的主机,及其它 LAN/WAN 中的主机利用非 TCP 传输层协议组成使用 SMTP ,可实现相同网络上处理机之间的邮件传输,也可通过中继器或网关实现某处理机与其它网络之间的邮件传输 SMTP协议工作原理  SMTP是工作在两种情况下:一是电子邮件从客户机传输到服务器:二是从某一个服务器传输到另一个服务器SMTP也是个请求/响应协议,命令和响应都是基于ASCⅡ文本,并以CR和LF符结束响应包括一个表示返回状态的三位数字代码SMTP在TCP协议25号端口监听连续请求   连接和发送过程如下:   (1)建立TCP 连接   (2)客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令;服务器端正希望以OK作为响应,表明准备接收   (3)客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行;服务器端则表示是否愿意为收件人接收邮件。

        (4)协商结束,发送邮件,用命令DATA发送   (5)以“.”号表示结束输入内容一起发送出去,结束此次发送,用QUIT命令退出3.程序核心代码3.1服务器端相关代码:1)、相关核心代码如下:// SMTPSeverDlg.cpp : implementation file#include "stdafx.h"#include "SMTPSever.h"#include "SMTPSeverDlg.h"#include "Picture.h"#include // CSMTPSeverDlg message handlersBOOL CSMTPSeverDlg::OnInitDialog(){ CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here IsDataContent = FALSE ; IsShow = FALSE ; m_Listener.SetParent(this); m_Server.SetParent(this); return TRUE; // return TRUE unless you set the focus to a control}void CSMTPSeverDlg::OnSysCommand(UINT nID, LPARAM lParam){ if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); }}void CSMTPSeverDlg::OnAccept(){ CString str; str.Format("*** 收到连接请求"); m_List_Smtp.InsertString(-1,str); if(m_Listener.Accept(m_Server)) { str.Format("*** 建立连接"); m_List_Smtp.InsertString(-1,str); str = _T("220 Simple Mail Sever Ready for Mail\r\n"); m_Server.Send((LPCTSTR)str,str.GetLength()); str = _T("S: ")+str; m_List_Smtp.InsertString(-1,str); m_Server.AsyncSelect(FD_READ); } else m_Server.Close();}void CSMTPSeverDlg::OnReceive(){ char buff[65536]; char local_host[80]; int nRead; memset(buff,0,65536);//清空缓冲区接收数据 nRead = m_Server.Receive(buff, 65536); //根据读到的长度 switch (nRead) { case 0: m_Server.Close(); break; case SOCKET_ERROR: if (GetLastError() != WSAEWOULDBLOCK) { AfxMessageBox ("Error occurred"); m_Server.Close(); } break; default: buff[nRead] =0; //terminate the string CString szTemp; if(IsDataContent) { while(strstr(buff,"\r\n.\r\n")==NULL) { str+=buff; memset(buff,0,65536); nRead = m_Server.Receive(buff, 65536); } str+=buff; CString Temp ; Temp.Format("%s\r\n\r\n",(LPCTSTR)str.c_str()); m_Edit_Con.SetWindowText(Temp); Base64_decode(Temp); szTemp = _T("250 Message accepted for delivery\r\n"); m_Server.Send(szTemp,szTemp.GetLength()); szTemp = _T("S: ")+szTemp; m_List_Smtp.InsertString(-1,szTemp); szTemp.Empty(); IsDataContent=FALSE; } if(strnicmp(buff,"HELO",4)==0) { szTemp = buff; szTemp = _T("C: ")+szTemp; //m_List_Smtp.InsertString(-1,(LPCTSTR)buff); m_List。

      点击阅读更多内容
      相关文档
      2023年湖北省孝感市应城市东马坊街道招聘社区工作者真题附详细解析.docx (2025秋新版)部编版二年级语文上册全册教学设计.docx 2024年河北省邯郸市魏县北皋镇招聘社区工作者真题参考答案详解.docx 2023年湖南省郴州市桂阳县黄沙坪镇招聘社区工作者真题附详解.docx 2021-2025年中级银行从业资格之中级个人理财通关试题库附完整答案详解【题】.docx 2025年吉林省“入团积极分子”学习考试库及参考答案详解1套.docx 2024年湖南省怀化市沅陵县五强溪镇招聘社区工作者真题参考答案详解.docx 2023年浙江省温州市文成县桂山乡招聘社区工作者真题附详细解析.docx 新人教版二年级数学下册全册教案(非表格式216页).docx 2025年东营市入团积极分子考试题库及参考答案详解.docx 2024年甘肃省陇南市徽县伏家镇招聘社区工作者真题及答案详解1套.docx 2023年湖北省十堰市竹山县官渡镇招聘社区工作者真题带答案详解.docx (2025秋新版)北师大版二年级上册数学全册教学设计.docx 2025年海南省事业单位招聘考试公共基础知识考试试题库及答案详解(全国).docx 2024年河南省漯河市源汇区老街街道招聘社区工作者真题附答案详解.docx 2023年湖南省衡阳市常宁市三角塘镇招聘社区工作者真题带题目详解.docx 2021年CAAC四类无人机执照考试复习题库资料及答案详解一套.docx 统编版五年级上册语文全册教案(表格式).docx 2025年白城市入团考试题库及参考答案详解.docx 2024年黑龙江省齐齐哈尔市克山县向华乡招聘社区工作者真题带答案详解.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.