计算机网络课程设计论文及代码Word文档格式.docx
- 文档编号:18173898
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:22
- 大小:101.69KB
计算机网络课程设计论文及代码Word文档格式.docx
《计算机网络课程设计论文及代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机网络课程设计论文及代码Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
SMTP是建模在FTP文件传输服务上的一种服务,主要用于传输系统之间的信息并提供来信有关的通知。
SMTP独立于特定的传输子系统,而且仅要求一条可以保证传送数据单元顺序的通道且只需要可靠有序的数据流信道支持。
SMTP重要特性之一是其能跨越网络传输,即“SMTP中继”。
通常,一个网络可以由公用互联网上TCP可相互访问的主机、防火墙分隔的TCP/IP网络上TCP可相互访问的主机,与其它LAN/WAN中的主机利用非TCP传输层协议组成。
使用SMTP,可实现一样网络上处理机之间的传输,也可通过中继器或网关实现某处理机与其它网络之间的传输。
在这种方式下,的发送可能经过从发送端到接收端路径上的大量中间中继器或网关主机。
域名服务系统(DNS)的交换服务器可以用来识别出传输的下一跳IP地址。
SMTP在传输文件过程中使用25号端口
可大致用下面的图2-1来表示:
用户
发送SMTP
文件系统
接收SMTP
SMTP命令
内容
应答
图2-1SMTP通信模型
2.2javamailAPI的简介
一般情况下,在eclipse中,电子程序的编写是主要是利用Javajdk1.7扩展包JavaMailAPI等与相关的SMTP等通信协议来实现的。
随着现代软件业的发展,java提供了方便、简易、与服务器无关且稳固的电子处理组件,使我们可以在程序开发语言中调用这些组件,利用很简单的语言实现功能强大的程序。
JavaMail便是一个很好的电子程序开发扩展组件。
JavaMailAPI是读取、撰写、发送电子信息的可选包。
我们可用它来建立如Eudora、Foxmail、MSOutlookExpress一般的用户代理程序(MailUserAgent,简称MUA)。
而不是像sendmail或者其它的传输代理(MailTransferAgent,简称MTA)程序那样可以传送、递送、转发。
从另外一个角度来看,我们这些电子用户日常用MUA程序来读写,而MUA依赖着MTA处理的递送。
JavaMail核心类:
Session、Message、Address、Authenticator、Transport、Store、Folder。
Session类:
定义了基本的会话。
就像会话那样,我们进行收发的工作都是基于这个会话的。
Session对象利用了java.util.Properties对象获得了服务器、用户名、密码信息和整个应用程序都要使用到的共享信息。
Message类:
当我们建立了Session对象后,便可以被发送的构造信息体了。
在这里SUN提供了Message类型来帮助开发者完成这项工作。
由于Message是一个抽象类,大多数情况下,我们使用javax.mail.internet.MimeMessage这个子类,该类是使用MIME类型、MIME信息头的信息。
信息头只能使用US-ASCII字符,而非ASCII字符将通过编码转换为ASCII的方式使用。
Address类:
到这里,我们已经建立了Session和Message,下面将介绍如何使用地址类:
Address。
像Message一样,Address类也是一个抽象类,所以我们将使用javax.mail.internet.InternetAddress这个子类。
Authenticator类:
像类那样,JavaMailAPI通过使用授权者类(Authenticator)以用户名、密码的方式访问那些受到保护的资源,在这里“资源”就是指服务器。
在javax.mail包中可以找到这个JavaMail的授权者类(Authenticator)。
Transport类:
在发送信息时,Transport类将被用到。
这个类实现了发送信息的协议(通称为SMTP),此类是一个抽象类,我们可以使用这个类的静态方法send()来发送消息:
Transport.send(message);
Store和Folder类:
接收和发送很类似都要用到Session。
但是在获得Session后,我们需要从Session中获取特定类型的Store,然后连接到Store,这里的Store代表了存储的服务器。
在连接Store的过程中,极有可能需要用到用户名、密码或者Authenticator。
3.概要设计
3.1系统的总体结构框图(类图)
EmailSender
在程序中绑定发件人,收件人地址,标题,正文,附件
验证成功后,根据所填写的地址,每间隔一秒.将发送到各个目的
验证成功后,自动填写附件名,将附件封包,根据所填写的地址,将发送到目的
验证成功后,根据所填写的地址,将发送到目的
Properties
PasswordAuthentication
使用的pop和stmp服务器以与将账号密码进行登陆验证
catch(Exceptione)
检查错误,.如有错误,提交错误报告
有多个目的地址
只有一个目的地址
有附件
EmailClinet
填写发件人和收件人地址,标题,正文,附件,
图3-1系统的总体结构框图
每份电子的发送都要涉与到发送方与接收方,发送方式构成客户端,而接收方构成服务器。
发送方通过客户程序,将编辑好的电子向邮局服务器(SMTP服务器)发送。
邮局服务器识别接收者的地址,并向管理该地址的服务器(POP3服务器)发送消息。
我使用新浪免费提供的POP服务,直接使用注册的账号密码登陆服务器向目的地址发送。
POP协议具体过程是:
发送到服务器上,电子客户端调用客户机程序以连接服务器,并下载所有未阅读的电子。
这种离线访问模式是一种存储转发服务,将从服务器端送到个人终端机器上,一般是PC机或MAC。
一旦发送到PC机或MAC上,服务器上的将会被删除。
3.2系统模块结构
电子客户端主要由以下两个模块构成:
发送模块、用户登入。
其功能模块如图2-1所示:
电子发送端程序
用户登入
发送
图3-2系统功能模块图
1)用户登入:
当跟密码正确的时候才可以登入进去。
2)发送模块:
正文写好后然后点发送。
3.3类的功能设计
3.3.1用户登入类
关键变量:
privateJPanelmailPanel=newJPanel();
privateJPanelpasswordPanel=newJPanel();
privateJPanelmailLoginPanel;
privateJComboBoxjComboBox;
privateJLabelmaitLabel;
privateJLabelmailPasswordLable;
privateJTextFieldmailText;
privateJPasswordFieldpasswordText;
。
关键方法:
Stringmail=mailText.getText();
Stringpassword=passwordText.getText();
3.3.2发送类
privateJLabelsubject;
//主题
privateJLabelmainContent;
//正文
privateJLabeladdress;
//目的
privateJTextFieldsubjectText;
privateJTextAreacontentText;
privateJTextAreaaddText;
privateJPanelsubjectPanel;
privateJPanelcontentPanel;
privateJPaneladdressPanel;
privateuttonsendButton;
privateuttonsendSuccess;
privateuttonsendAgain;
publicstaticvoidsend(Stringmail,Stringpassword,String[]receivers,Stringsubject,StringmailContent,Stringmimetype){
send(receivers,subject,mailContent,mimetype);
}
publicstaticvoidsend(Stringreceiver,Stringsubject,StringmailContent,Stringmimetype){
send(newString[]{receiver},subject,mailContent,mimetype);
publicstaticvoidsend(String[]receivers,Stringsubject,StringmailContent,Stringmimetype){
send(receivers,subject,mailContent,null,mimetype);
3.4发送流程图
发送流程图如图3-4,发送时会对以与账号进行处理和验证。
当账号跟密码都符合的时候,然后点击发送,就发出去了。
假如账号跟密码不正确的话,就发送失败。
密码
发送成功
密码正确
发送失败
密码不正确
图3-4发送流程图
4.功能模块的实现
4.1程序主界面的实现
本次设计中,主要用到对话框Java图形界面。
Java图形界面是实现应用程序人机交互的重要组成部分。
它不但可以实现数据流的输入和输出,而且也可以移动和关闭对话框。
主界面有对应的按钮,方便用户使用。
关键代码如下:
首先构造客户端面板,定义以下几个需要的界面和按钮
maitLabel=newJLabel("
"
);
mailPasswordLable=newJLabel("
密码"
subject=newJLabel("
主题"
mainContent=newJLabel("
正文"
address=newJLabel("
目的"
sendButton=newutton("
发送"
其次将其安排到客户端面板上相应位置
container.add(mailLoginPanel,BorderLayout.NORTH);
container.add(contentPanel,BorderLayout.CENTER);
container.add(addressPanel,BorderLayout.SOUTH);
设置面板背景颜色
contentPanel.setBackground(Color.yellow);
addressPanel.setBackground(Color.yellow);
图4-1程序主界面实现图
4.2发送的实现
首先进入主界面,在主界面输入、密码、主题、正文和目的,然后点发送,假如账号跟密码都正确的话就可以发送,否则就发送不成功,如图所示。
1)获取收件人账号(程序会检测输入账号合法性)。
关键代码:
//SMTP服务器需要验证:
props.put("
mail.smtp.host"
"
//Smtp
mail.smtp.auth"
true"
2)获取账号设置界面中用户输入的账号和密码传入服务器。
关键代码:
//传入用户名和口令:
Sessionsession=Session.getDefaultInstance(props,newAuthenticator(){
protectedPasswordAuthenticationgetPasswordAuthentication(){
returnnewPasswordAuthentication("
"
880722"
session.setDebug(true);
3)发送成功的提示
sendSuccess=newutton("
发送成功!
!
sendSuccess.setBackground(Color.red);
sendSuccess.setVisible(false);
图4-2发送的实现图
5.程序测试
5.1主界面测试
主界面有对应的按钮,方便用户使用,如图所示。
图5-1主界面测试
5.2发送电子程序测试
在上一步已经测试了账号输入,然后再收件人地址输入框中输入“yuhui126.”。
接下来在主题输入框中输入“测试”,正文中输入“<
b>
测试<
/b>
<
br>
余辉1008041113”,最后点击发送,当发送成功会在发送旁边返回“发送成功”的信息。
如图为测试发送成功。
图5-2(a)发送电子程序测试面
图5-2(b)发送电子程序测试面
6.总结
这次课程设计我做的是发送程序,我主要利用java语言和MyEclipse工具来实现的几个主要功能,包括标题,正文,附件以与多方发送等,通过自我学习,以与在老师的辅导下顺利实现使用代码发送功能.完成一次从理论向实践的过程,找到了一些自己在平时学习中的不足和问题.
由于程序实行较为复杂,所以应该在一开始时做好规划,画好流程图,做好大体框架,然后再逐一细化,再把各个模块联系起来.一定要做好步步扎实,否则容易因为例如封装问题等造成的混乱
总体实行流程是
1.写好容
2.通过两种协议,即SMTP(SimpleMailTransferProtocol,简单传输协议)和POP3(PostOfficeProtocol,邮局协议3),使用实现注册好的账号和密码进行登陆和验证
3.验证成功后,将之前写好的通过服务器发送到目的地址
4.发送成功,否则返回错误报告
这次课程设计也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。
另外在课程设计的过程中,当我们碰到不明白的问题时,指导老师总是耐心的讲解,给我们的设计以极大的帮助,使我们获益匪浅。
因此非常感老师的教导。
通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。
我觉得作为一名网络工程专业的学生,这次课程设计是很有意义的。
更重要的是如何把自己平时所学的东西应用到实际中。
靠着这一个多礼拜的“学习”,在老师同学的帮助和讲解下,自己开始主动学习并逐步从基础慢慢开始弄懂它。
在这次课程设计作业的过程中由于在设计方面我缺少经验,理论基础知识掌握得不牢固,在设计中难免会出现这样那样的问题,如:
确定设计方案时,在附件名选择模块中“卡住了”,再次,在一些细节方面比较薄弱,出错检测模块,服务器验证等方面都遇到了困难,在同学的帮助下逐步解决了。
这些都暴露出了前期我在这些方面知识的欠缺和经验的不足。
对于我来说,收获最大的是方法和能力;
那些分析和解决问题的能力。
在整个课程设计的过程中,我发现我在经验方面十分缺乏,有时候空有理论知识,没有理性的知识;
有些东西可能与实际脱节。
总体来说,我觉得像课程设计这种类型对我们的帮助还是很大的,它需要我们将学过的相关知识系统地联系起来,从中暴露出自身的不足,以待改进!
致
感我的指导老师涛老师,本次论文的每个细节和每个数据,都离不开他的细心指导。
老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;
他循循善诱的教导和不拘一格的思路给予我无尽的启迪。
无论在理论上还是在实践中,老师都给了我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助。
另外,在系统开发过程中同学也给予我很大的帮助,帮助解决了不少的难点,使得系统能与时开发完成,这里一并表示感。
在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有许多可敬的师长、同学、朋友给了我无私的帮助,在这里请接受我诚挚的意!
最后祝各位老师工作顺利、身体健康!
参考文献
[1]希仁.计算机网络.第五版[M].:
电子工业,2008.1
[2]耿祥义,跃平.Java大学实用教程.第二版[M].:
电子工业,2005.5
[3]王勇,代桂平.计算机网络课程设计[M].:
清华大学,2009.6
[4]耿祥义,跃平.Java大学实用教程学习指导.第二版[M].:
[5].(美)埃史尔
.Java编程思想(第4版).机械工业.2007
[6]海山.深入JavaServlet网络编程[M].:
清华大学,2002.2
[7]KarlMoss.JavaServlet开发人员指南[M].:
清华大学,2002
[8]Liang,Y.D..Java语言程序设计基础篇.机械工业,2006
[9]晓华.精通Java核心技术.电子工业,2003
附录1:
EmailClient类
功能:
该类是实现系统界面的类。
importjava.awt.BorderLayout;
importjava.awt.Color;
importjava.awt.Container;
importjava.awt.FlowLayout;
importjava.awt.Font;
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.utton;
importjavax.swing.JComboBox;
importjavax.swing.JComponent;
importjavax.swing.JFrame;
importjavax.swing.JInternalFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JPasswordField;
importjavax.swing.JTextArea;
importjavax.swing.JTextField;
publicclassEmailClientextendsJFrame{
privateJLabelsubject;
privateJLabelfujian;
//附件
//发送者和密码
privateJPanelmailPanel=newJPanel();
privateJPanelpasswordPanel=newJPanel();
privateJPanelmailLoginPanel;
privateJComboBoxjComboBox;
privateJLabelmailPasswordLable;
privateJTextFieldmailText;
privateJPasswordFieldpasswordText;
//构造方法
publicEmailClient(){
super("
群发器"
this.setSize(550,600);
//获取面板
Containercontainer=getContentPane();
//发件人
maitLabel=newJLabel("
mailPasswordLable=newJLabel("
mailText=newJTextField(10);
passwordTex
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 课程设计 论文 代码