计算机网络课程设计汇本论文与代码_第1页
计算机网络课程设计汇本论文与代码_第2页
计算机网络课程设计汇本论文与代码_第3页
计算机网络课程设计汇本论文与代码_第4页
计算机网络课程设计汇本论文与代码_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、1 / 26目录1. 前言 1概述 1电子发送协议与技术2SMTP 协议简介及通讯模型2javamail API的简介 2概要设计3系统模块构造5类的功能设计5用户登入类5发送类 5发送流程图6功能模块的实现7程序主界面的实现7发送的实现9程序测试11主界面测试11发送电子程序测试11参考文献14附录 1:EmailClient类 15附 录 2:MainSender 类 211. 前言概述电子简称 又称电子信箱、 电子邮政, 它是一种用电子手段提供信息交换的通信方式。它是全球多种网络上使用最普遍的一项效劳。这种非交互式的通信,加速了信息的交流及数据传送,它是一个简易、快速的方法。通过连接全世

2、界的Internet,实现各类信号的传送、接收、 存贮等处理, 将送到世界的各个角落。到目前为止,可以说电子是Internet资源使用最多的一种效劳,不止局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。电子不是一种“终端到终端的效劳,是被称为“存贮转发式效劳。这正是电子信箱系统的核心, 利用存贮转发可进展非实时通信,属异步通信方式。即信件发送者可随时随地发送, 不要求接收者同时在场,即使对方现在不在,扔可将立刻送到对方的信箱,且存储在对方的电子中。接收者可在他认为方便的时候读取信件,不受时空限制。1.2国现状电子是 Internet最根本的和最重要的效劳之一。据统计, I

3、nternet上百分之三十以上的业务量是电子。 由于我国的通讯根底设施较差,网络速度较慢,因而,与Internet其它功能如、FTP、NEWS等相比,电子效劳具有更大的实用性。?CINNIC中国互联网络开展状况统计报 告?中指出。 71.65%的中国用户最常使用的网络效劳就是电子,这个比例远远高于搜索引50.40%和软件上传或下载效劳44.16%等其他效劳。 PAGE 25 / 26电子发送协议与技术SMTP协议简介及通讯模型(SMTP: SimpleMailTransferProtocol)即简单传输协议, 它是一组用于由源地址到目的地址传送的规那么, 由它来控制信件的中转方式。它能够在传送

4、中接力传送,传送效劳提供了进程间通信环境(IPCE) ,此环境可以包括一个网络,几个网络或一个网络的子网。理解到传送系统 ( 或 IPCE) 不是一对一的是很重要的。进程可能直接和其它进程通过的IPCE 通信。是一个应用程序或进程间通信。可以通过连接在不同IPCE 上的进程跨网络进展传送。更特别的是,可以通过不同网络上的主机接力式传送。SMTP协议属于TCP IP 协议族 , 它帮助每台计算机在发送或中转信件时找到下一个目的地。通过 SMTP协议所指定的效劳器, 我们就可以把 E mail 寄到收信人的效劳器上了, 整个过程只要几分钟。SMTP效劳器那么是遵循SMTP协议的发送效劳器,用来发送

5、或中转你发出的电子。SMTP是一种提供可靠且有效电子传输的协议。SMTP是建模在FTP文件传输效劳上的一种效劳,主要用于传输系统之间的信息并提供来信有关的通知。SMTP独立于特定的传输子系统,而且仅要求一条可以保证传送数据单元顺序的通道且只需要可靠有序的数据流信道支持。SMTP重要特性之一是其能跨越网络传输,即“SMTP 中继。通常,一个网络可以由公用互联网上TCP 可相互访问的主机、 防火墙分隔的TCP/IP 网络上 TCP 可相互访问的主机,及其它LAN/WAN 中的主机利用非TCP 传输层协议组成。使用 SMTP ,可实现一样网络上处理机之间的传输,也可通过中继器或网关实现某处理机与 其

6、它网络之间的传输。在这种方式下,的发送可能经过从发送端到接收端路径上的大量中间中继器或网关主机。域名效劳系统DNS的交换效劳器可以用来识别出传输的下一跳IP地址。 SMTP在传输文件过程中使用25 号端口可大致用下面的图2-1 来表示:用户文件系统文件系统SMTP 命令内容发送 SMTP应答接收 SMTP图 2-1SMTP通信模型javamail API的简介一般情况下,在eclipse中,电子程序的编写是主要是利用Java jdk1.7扩展包JavaMailAPI等及相关的SMTP等通信协议来实现的。随着现代软件业的开展,java提供了方便、 简易、与效劳器无关且稳固的电子处理组件,使我们可

7、以在程序开发语言中调用这些 组件,利用很简单的语言实现功能强大的程序。JavaMail便是一个很好的电子程序开发扩 展组件。JavaMail API是读取、撰写、发送电子信息的可选包。我们可用它来建立如Eudora 、Foxmail 、MS Outlook Express一般的用户代理程序Mail User Agent,简称 MUA。而不是像 sendmail或者其它的传输代理Mail Transfer Agent,简称 MTA程序那样可以传送、 递送、 转发。从另外一个角度来看,我们这些电子用户日常用MUA程序来读写,而MUA依赖着 MTA处理的递送。JavaMail核心类: Session

8、 、Message、Address 、Authenticator、Transport、Store 、Folder 。Session类:定义了根本的会话。就像Http会话那样,我们进展收发的工作都是基于这个会话的。 Session对象利用了java.util.Properties对象获得了效劳器、用户名、密码信息和整个应用程序都要使用到的共享信息。Message 类:当我们建立了Session 对象后, 便可以被发送的构造信息体了。在这里 SUN 提供了 Message 类型来帮助开发者完成这项工作。由于 Message 是一个抽象类, 大多数情况下,我们使用ernet.MimeMessage这

9、个子类,该类是使用MIME类型、 MIME 信息头的信息。信息头只能使用US-ASCII 字符,而非ASCII 字符将通过编码转换为ASCII 的方式使用。Address 类:到这里,我们已经建立了Session和 Message,下面将介绍如何使用地址类 : Address 。 像Message 一 样 , Address类 也 是 一 个 抽 象 类 , 所 以 我 们 将 使 用ernet.InternetAddress这个子类。Authenticator类 : 像类 那 样 , JavaMailAPI通 过 使 用 授 权 者 类Authenticator以用户名、密码的方式访问那些受

10、到保护的资源,在这里“资源就是指效劳器。在javax.mail包中可以找到这个JavaMail的授权者类 Authenticator。Transport类:在发送信息时,Transport类将被用到。这个类实现了发送信息的协议通称为SMTP,此类是一个抽象类,我们可以使用这个类的静态方法send() 来发送消息:Transport.send(message);Store和 Folder类: 接收和发送很类似都要用到Session 。但是在获得Session 后, 我们需要从Session中获取特定类型的Store ,然后连接到Store ,这里的Store代表了存储的效劳器。在连接Store的

11、过程中,极有可能需要用到用户名、密码或者Authenticator。概要设计系统的总体构造框图类图EmailClinet填 写 发 件 人 和 收件 人 地 址 , 标 题 , 正文 , 附件,EmailSender在程序中绑定发 件人, 收件人地址 , 标题, 正文 , 附件Properties PasswordAuthentication使用的pop和 stmp效劳器以及将账号密码进展登陆验证有多个目的地址只 有 一 个目的地址有附件验证成功后, 根据所填写的地址, 每间隔一秒 .将发送到各个目的验证成功后 ,根据所填写的地址 ,将发送到目的验证成功后,自动填写附件名 ,将附件封包 ,根据

12、所填写的地址,将发送到目的catch (Exception e) 检查错误 ,.如有错误,提交织误报告图 3-1 系统的总体构造框图每份电子的发送都要涉及到发送方与接收方,发送方式构成客户端,而接收方构成效劳器。发送方通过客户程序,将编辑好的电子向邮局效劳器SMTP效劳器发送。邮局效劳器识别接收者的地址,并向管理该地址的效劳器POP3效劳器发送消息。我使用新浪免 费提供的POP效劳 , 直接使用注册的账号密码登陆效劳器向目的地址发送。POP协议具体过程是: 发送到效劳器上,电子客户端调用客户机程序以连接效劳器,并下载所有未阅读的电子。这种离线访问模式是一种存储转发效劳,将从效劳器端送到个人终端

13、机器上,一般是 PC机或 MAC。一旦发送到PC 机或 MAC 上,效劳器上的将会被删除。系统模块构造电子客户端主要由以下两个模块构成:发送模块、 用户登入。 其功能模块如图2-1 所示:电子发送端程序用发户送登入图 3-2系统功能模块图1用户登入:当跟密码正确的时候才可以登入进去。2发送模块:正文写好后然后点发送。类的功能设计用户登入类关键变量:private JPanel mailPanel = newJPanel(); private JPanel passwordPanel=new JPanel(); private JPanel mailLoginPanel; privateoBox

14、oBox;private JLabel maitLabel; private JLabel mailPasswordLable; private JTextField mailText;private JPasswordField passwordText;。关键方法:String mail=mailText.getText();String password=passwordText.getText();发送类关键变量:private JLabel subject;/主题private JLabel mainContent;/正文private JLabel address;/目的priva

15、te JTextField subjectText;private JTextArea contentText; private JTextArea addText; private JPanel subjectPanel; private JPanel contentPanel; private JPanel addressPanel; private utton sendButton; private utton sendSuccess; private utton sendAgain;关键方法:public static void send(String mail,String pass

16、word,String receivers, String subject, String mailContent, String mimetype)send(receivers, subject, mailContent, mimetype);public static void send(String receiver, String subject, String mailContent, String mimetype) send(new Stringreceiver, subject, mailContent, mimetype);public static void send(St

17、ring receivers, String subject, String mailContent, String mimetype) send(receivers, subject, mailContent, null, mimetype);发送流程图发送流程图如图3-4 ,发送时会对以及账号进展处理和验证。当账号跟密码都符合的时候,然后点击发送,就发出去了。假设账号跟密码不正确的话,就发送失败。密码发送密码正确密码不正确发送成功发送失败图 3-4发送流程图功能模块的实现程序主界面的实现本次设计中 , 主要用到对话框Java 图形界面。 Java 图形界面是实现应用程序人机交互的重要组成局

18、部。它不但可以实现数据流的输入和输出,而且也可以移动和关闭对话框。主界面有对应的按钮,方便用户使用。关键代码如下:首先构造客户端面板, 定义以下几个需要的界面和按钮maitLabel=new JLabel(); mailPasswordLable=new JLabel(密码); subject=new JLabel(主题 );mainContent=new JLabel(正文);address=new JLabel(目的 );sendButton=new utton(发送 );其次将其安排到客户端面板上相应位置container.add(mailLoginPanel,BorderLayout.

19、NORTH);container.add(contentPanel,BorderLayout.CENTER);container.add(addressPanel,BorderLayout.SOUTH);设置面板背景颜色contentPanel.setBackground(Color.yellow);addressPanel.setBackground(Color.yellow);发送的实现图 4-1程序主界面实现图首先进入主界面,在主界面输入、密码、主题、正文和目的,然后点发送,假设账号跟密码都正确的话就可以发送,否那么就发送不成功,如下图。1获取收件人账号程序会检测输入账号合法性。关键代码

20、:String mail=mailText.getText();String password=passwordText.getText();/ SMTP 效劳器需要验证:props.put(mail.smtp.host, smtp.sina.);/Smtp props.put(mail.smtp.auth, true);获取账号设置界面中用户输入的账号和密码传入效劳器。关键代码:/传入用户名和口令:Session session = Session.getDefaultInstance(props, new Authenticator() protected PasswordAuthenti

21、cation getPasswordAuthentication() return new PasswordAuthentication(wangxy070421sina.,880722); session.setDebug(true);发送成功的提示关键代码:sendSuccess=new utton(发送成功! ); sendSuccess.setBackground(Color.red); sendSuccess.setVisible(false);图 4-2发送的实现图程序测试主界面测试本次设计中 , 主要用到对话框Java 图形界面。 Java 图形界面是实现应用程序人机交互的重要组

22、成局部。它不但可以实现数据流的输入和输出,而且也可以移动和关闭对话框。主界面有对应的按钮,方便用户使用,如下图。发送电子程序测试图 5-1 主界面测试在上一步已经测试了账号输入,然后再收件人地址输入框中输入“ yuhui126. 。接下来在主题输入框中输入“测试,正文中输入 “ 测试 余辉 1008041113 ,最后点击发送,当发送成功会在发送旁边返回“发送成功的信息。如图为测试发送成功。图 5-2 a发送电子程序测试面图 5-2 b发送电子程序测试面总结这次课程设计我做的是发送程序, 我主要利用java 语言和 MyEclipse工具来实现的几个主要功能 , 包括标题 , 正文, 附件以及

23、多方发送等, 通过自我学习, 以及在教师的辅导下顺利实现使用代码发送功能. 完成一次从理论向实践的过程, 找到了一些自己在平时学习中的缺乏和问题 .由于程序实行较为复杂, 所以应该在一开场时做好规划, 画好流程图 , 做好大体框架, 然后再逐一细化 , 再把各个模块联系起来. 一定要做好步步扎实, 否那么容易因为例如封装问题等造成的混乱 总体实行流程是写好容通过两种协议,即SMTP(SimpleMailTransfer Protocol ,简单传输协议) 和 POP3(Post Office Protocol ,邮局协议3), 使用实现注册好的账号和密码进展登陆和验证验证成功后 ,将之前写好的

24、通过效劳器发送到目的地址发送成功 ,否那么返回错误报告这次课程设计也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影 响。另外在课程设计的过程中,当我们碰到不明白的问题时,指导教师总是耐心的讲解,给 我们的设计以极大的帮助,使我们获益匪浅。因此非常感教师的教诲。通过这次设计, 我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的典范。我觉得作为一名网络工程专业的学生,这次课程设计是很有意义的。更重要的是如何把自己平时所学的东西应用到实际中。靠着这一个多礼拜的“学习,在教师同学的帮助和讲解下,自己开场主动学习并逐

25、步从根底慢慢开场弄懂它。在这次课程设计作业的过程中由于在设计方面我缺少经历,理论根底知识掌握得不结实,在设计中难免会出现这样那样的问题,如:确定设计方案时,在附件名选择模块中“卡住了, 再次,在一些细节方面比拟薄弱,出错检测模块, 效劳器验证等方面都遇到了困难,在同学的帮助下逐步解决了。这些都暴露出了前期我在这些方面知识的欠缺和经历的缺乏。对于我来说, 收获最大的是方法和能力;那些分析和解决问题的能力。在整个课程设计的过程中, 我发现我在经历方面十分缺乏,有时候空有理论知识,没有理性的知识;有些东西可 能与实际脱节。 总体来说, 我觉得像课程设计这种类型对我们的帮助还是很大的,它需要我们将学过

26、的相关知识系统地联系起来,从中暴露出自身的缺乏,以待改良!致感我的指导教师涛教师,本次论文的每个细节和每个数据,都离不开他的细心指导。教师严谨细致、 一丝不苟的作风一直是我工作、学习中的典范; 他循循善诱的教诲和不拘一格的思路给予我无尽的启迪。无论在理论上还是在实践中,教师都给了我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助。另外, 在系统开发过程中同学也给予我很大的帮助,帮助解决了不少的难点,使得系统能及时开发完成,这里一并表示感。在论文即将完成之际,我的心情无法平静,从开场进入课题到论文的顺利完成,有许多可敬的师长、同学、朋友给了我无私的帮助,在这里请承受我诚挚

27、的意!最后祝各位教师工作顺利、身体安康!参考文献希仁 . 计算机网络 . 第五版 M. :电子工业, 2008.1耿祥义,跃平.Java大学实用教程. 第二版 M.:电子工业, 2005.5王勇,代桂平. 计算机网络课程设计M. :清华大学,2009.6耿祥义,跃平.Java大学实用教程学习指导. 第二版 M.:电子工业, 2005.55.(美) 埃史尔.Java编程思想 ( 第 4 版).机械工业 .2007海山 . 深入 Java Servlet网络编程 M . :清华大学,2002.2Karl Moss.Java Servlet开发人员指南M . :清华大学, 2002Liang, Y.

28、D. Java语言程序设计根底篇. 机械工业 ,2006晓华 .精通 Java 核心技术 . 电子工业 ,2003附录 1: EmailClient类功能:该类是实现系统界面的类。import java.awt.BorderLayout; import java.awt.Color;import java.awt.Container; import java.awt.FlowLayout; import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ActionEvent; import java.awt.even

29、t.ActionListener; import javax.swing.utton;import javax.swing.oBox; import javax.swing.Jponent; import javax.swing.JFrame;import javax.swing.JInternalFrame;import javax.swing.JLabel; import javax.swing.JPanel;import javax.swing.JPasswordField; import javax.swing.JTextArea; import javax.swing.JTextFi

30、eld;public class EmailClient extends JFrame private JLabel subject;/主题private JLabel mainContent;/正文private JLabel fujian;/附件private JLabel address;/目的private JTextField subjectText; private JTextArea contentText; private JTextArea addText;private JPanel subjectPanel; private JPanel contentPanel; pr

31、ivate JPanel addressPanel; private utton sendButton; private utton sendSuccess; private utton sendAgain;/ 发送者和密码private JPanel mailPanel = new JPanel(); private JPanel passwordPanel=new JPanel(); private JPanel mailLoginPanel;private oBox oBox; private JLabel maitLabel;private JLabel mailPasswordLab

32、le; private JTextField mailText;private JPasswordField passwordText;/ 构造方法public EmailClient()super(群 发 器 ); this.setSize(550, 600);/ 获取面板Container container=getContentPane();/ 发件人maitLabel=new JLabel(); mailPasswordLable=new JLabel(密码); mailText=new JTextField(10); passwordText=new JPasswordField(1

33、0);mailLoginPanel=new JPanel(); mailLoginPanel.setBackground(Color.yellow); mailLoginPanel.setLayout(new GridLayout(3,4); mailLoginPanel.add(mailPanel); mailLoginPanel.add(passwordPanel);/ 主题subject=new JLabel(主 题 ); subjectText=new JTextField(, 10); subjectPanel=new JPanel(new FlowLayout(); subject

34、Panel.add(subject);subjectPanel.add(subjectText); mailLoginPanel.add(new JLabel(); mailLoginPanel.add(maitLabel); mailLoginPanel.add(mailText); mailLoginPanel.add(new JLabel(); mailLoginPanel.add(new JLabel(); mailLoginPanel.add(mailPasswordLable); mailLoginPanel.add(passwordText); mailLoginPanel.ad

35、d(new JLabel(); mailLoginPanel.add(new JLabel(); mailLoginPanel.add(subject); mailLoginPanel.add(subjectText); mailLoginPanel.add(new JLabel();/ 正文mainContent=new JLabel(正 文 ); contentText=new JTextArea(18,23); contentText.setFont(new Font(Serif,Font.PLAIN,14); contentText.setLineWrap(true);contentT

36、ext.setEditable(true); contentPanel=new JPanel(); contentPanel.add(mainContent); contentPanel.add(contentText);/ 目的address=new JLabel(目的 ); addText=new JTextArea(5,25); addressPanel=new JPanel();/ 发送成功提示sendSuccess=new utton(发送成功! ); sendSuccess.setBackground(Color.red);sendSuccess.setVisible(false)

37、;/ 重新发送sendAgain=new utton(再写一封 ); Handler handler=new Handler(); sendAgain.addActionListener(handler); sendAgain.setBackground(Color.blue); sendAgain.setVisible(false);/ 发送按钮sendButton=new utton(发 送 ); sendButton.addActionListener(handler); addressPanel.add(sendSuccess,BorderLayout.NORTH); addressP

38、anel.add(sendAgain,BorderLayout.NORTH);addressPanel.add(address,BorderLayout.SOUTH); addressPanel.add(addText,BorderLayout.SOUTH); addressPanel.add(sendButton,BorderLayout.SOUTH);/ 设置底板颜色subjectPanel.setBackground(Color.yellow); contentPanel.setBackground(Color.yellow); addressPanel.setBackground(Co

39、lor.yellow);/ 将组件添加到面板上container.add(mailLoginPanel,BorderLayout.NORTH); container.add(contentPanel,BorderLayout.CENTER); container.add(addressPanel,BorderLayout.SOUTH); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE);/ 绑定事件private class Handler implements ActionListener public void action

40、Performed(ActionEvent e) / TODO Auto-generated method stub;if(e.getSource()=sendButton)/ 获取容Thread2 t=new Thread2(); t.start();else if(e.getSource()=sendAgain)subjectText.setText(); contentText.setText(); sendSuccess.setVisible(false); sendAgain.setVisible(false);public static void main(String args)

41、 EmailClient emailClient=new EmailClient(); System.out.println(sdsdf);class Thread2 extends Thread public void run()String subject=subjectText.getText(); String content=contentText.getText(); String address=addText.getText(); String mail=mailText.getText();String password=passwordText.getText(); if(

42、address!=null)String adds=address.split(;);EmailSender.send(mail,password,adds, subject, content,text/html);/ 发送完毕sendSuccess.setVisible(true); sendAgain.setVisible(true); System.out.println(发送完毕! );elseaddText.setText(没有写地址地址);附录2: MainSender类功能:实现发送等主要功能import java.io.File;import java.text.SimpleD

43、ateFormat; import java.util.Date;import java.util.Properties;import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Authenticator;import javax.mail.Message; import javax.mail.Multipart;import javax.mail.PasswordAuthentication; import javax.mail.Session;import

44、javax.mail.Transport;import ernet.InternetAddress; import ernet.MimeBodyPart; import ernet.MimeMessage; import ernet.MimeMultipart; import ernet.MimeUtility; import javax.swing.plaf.SliderUI;public class EmailSender private static final String charset = GBK;private static final String defaultMimetyp

45、e = text/plain; public static void main(String args) throws Exception /EmailSender.send(new Stringwp0905070417163., , ,null ,text/html);sendByoneSecond(new Stringyuhui126., , ,null , text/html);/*每隔 1秒发送一个封author weiping*/public static void sendByoneSecond(String adds,String title,Stringcontent,File files,String contentType) if(adds!=

温馨提示

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

评论

0/150

提交评论