毕业设计论文基于socket的文件传输系统管理资料.docx
- 文档编号:25299265
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:38
- 大小:332.65KB
毕业设计论文基于socket的文件传输系统管理资料.docx
《毕业设计论文基于socket的文件传输系统管理资料.docx》由会员分享,可在线阅读,更多相关《毕业设计论文基于socket的文件传输系统管理资料.docx(38页珍藏版)》请在冰豆网上搜索。
毕业设计论文基于socket的文件传输系统管理资料
密级公开学号
XX学院
毕业论文(设计)
基于socket的局域网文件传输系统
论文作者
指导教师
所属学院
专业
本科专科
年级
论文提交日期
论文答辩日期
xxx
xxx
数学与计算机学院
计算机科学与技术
本科
2007级
2011年5月20日
2011年5月28日
毕业论文(设计)学术承诺
本人郑重承诺:
,论文中不存在抄袭情况,论文中不包含其他人已经发表的研究成果,也不包含他人或其他教学机构取得的研究成果.
作者签名:
日期:
毕业论文(设计)使用授权的说明
本人了解并遵守衡水学院有关保留、使用毕业论文的规定。
即:
学校有权保留或向有关部门送交毕业论文的原件或复印件,允许论文被查阅和借阅;学校可以公开论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文及相关资料。
作者签名:
指导教师签名:
日期:
日期:
基于socket的局域网文件传输系统
摘要:
文件传输是通过一条网络连接从远地站点向本地主机复制文件。
当前internet上有着各种文件传输文件,例如QQ等。
但大多数是需要远地服务器控制的。
因此对于一些仅需在局域网内部完成的传输工作存在着风险和资源浪费。
基于socket的局域网文件传输系统是用java语言在myeclipseforspring。
它具有聊天和文件传输两个功能,可满足校园网等小范围内的日常工作和学习。
客户端双方及服务器在tcp协议基础上建立socket连接之后,客户端可以从服务器上获取其它登陆用户的用户名和ip地址等信息,在用户通讯前彼此的客户端还应该进行连接,它们之间的具体通讯过程是不需要通过服务器的点对点通讯。
关键词:
java;点对点;Socket连接
Title:
TheDesignandImplementationofFileTransferSystemBasedonLAN
Abstract:
Filetransfercopyfilesfromtheremotesitetothelocalhostthroughanetworkconnection.TheInternethasvariousfiletransferdocuments,suchasQQ,etc.Butmostremoteservercontrolisrequired.Soforsomeinternalcompletedonlyinthelocalareanetworktransmissionthereisariskandwasteofresources.BasedontheLANsocketwithfiletransfersystemisinmyeclipseforJavalanguagearecompletedundertheenvironmentofdevelopmentwhichissuitableforLANinternaldocumentstransmittingsystem.Ithasachatandfiletransfertwofunctions,canmeetthecampusnetworkandothersmallrangeofdailyworkandstudy.TheclientandserverinbothpartiesbasedonTCPprotocolaftersocketconnectionfromtheserver,theclientcanobtainotherlandingusersusernameandIPaddressandotherinformation,inusercommunicationbeforeeachother'sclientshouldalsoconnects,thespecificcommunicationsbetweenthemisnottoneedtoprocessthroughtheserver'speer-to-peercommunication.
Keywords:
Java;Peer-to-peer;Socketconnection
1绪论
当今世界科学技术飞速发今天,借助于网络进行信息资源交流给人们带来了极大的方便。
各种文件传输系统都已被广大用户接受。
比如QQ、UC、Internet邮件等互联网上的文件传输。
甚至需要花费大量的金钱购买各种移动磁盘或者其他局域网内连接主机的硬件设备。
而达到的效果却总是因为传输效率以及安全威胁而受到很大的限制。
在这种形势下,开发一个功能简单而实用,能在Windows操作系统中运行,并且具有可移植性的局域网内文件传输工具势在必行。
随着网络通信技术的发展与用户需求日益多样化,现代局域网络正处在变革与发展之中,本课题的主要目的之一是为了更清晰地培养学生掌握科学研究方法的能力和使学生迅速体会文件传输系统的研发过程。
基于局域网的文件传输系统能够让家庭网络以及各个企业等局域网对内部资料有一个快捷,准确,安全的共享。
特别是对如今较大系统研发的模块分工合作得到了绝对保密性,从而使各项工作有计划、更科学的进行及顺利完成,使企业的办事效率得到显著提高。
文件传输系统主要功能是自动获取局域网内用户的主机名,IP地址以及工作组名字,最终以C/S模式通过TCP/IP协议实现点到点文件传输功能。
本系统既锻炼了我们的实际动手能力,使我们将大学四年所学的理论知识与实际开发相结合,又引导我们进行了一次模拟实际产品的开发,对于我们以后工作能力的培养具有重要的意义。
前人的工作成果
目前,国内外企业对局域网的文件传输系实践上都还不够完善。
文件传输系统由于比较复杂,可变因素较多,安全性低,因此发展还不成熟。
但是随着科学技术的发展,各为中心的资源共享系统也即将进入高速发展期。
在国内,随着企业资源管理的规范化和规模的不断扩大,企业的计算机资源管理将不仅仅停留在依靠硬件或者Internet网络获取,而且将会向着安全的内部网络化资源管理方式迈进。
在此之前,人们已经在网络通信这个问题上做了许多的工作,开发了大量的文档、程序和应用软件,如RichardStevens的《UnixNetworkProgramming》介绍了在UNIX操作系统下通过Socket实现网络通信的基本原理及实现方式,Microsoft的WindowsSocketsAPI提供了一种快速编程实现Socket网络通信的机制。
前人的这些工作无疑为我们提供了宝贵的经验和快速的开发方法以及现成的开发实例。
然而,前人已有的工作成果已经无法完全满足我们的需求,即提供一种基于Socket的,易于使用具有高度可定制性的,面向中小企业内部通信需求的局域网通信软件。
本文的主要工作
论文主要针对公司或其他小范围内部局域网落设计出一种方便使用的、高性能的、并满足其基本通信需求的局域网文件传输系统(包含文件传输和聊天部分)。
客户端与服务器端可以在多种硬件平台上运行,具有较好好的兼容性能。
目前我们将通过在TCP/IP协议之上建立一个功能简单的文件传输系统(包含文件传输和聊天部分),日后程序功能将可以继续扩展,逐步发展成一个功能比较完整的大型文件传输系统,例如加上文件续传功能,客户端连接发展成多对多连接,服务器增加为客户深一步服务(如发布一些消息)的功能等。
2开发环境和相关技术简介
MyEclipse及MyEclipseforspring
MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。
它是功能丰富的J2EE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate。
在结构上,MyEclipse的特征可以被分为7类:
1.J2EE模型
2.WEB开发工具
3.EJB开发工具
4.应用程序服务器的连接器
5.J2EE项目部署服务
6.数据库服务
7.MyEclipse整合帮助
对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。
MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。
简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。
而myeclipseforspring是在myeclipse的基础上,加强了对spring的支持。
MyEclipseforSpring是MyEclipse家族的成员之一,其最大的特点就是提供了更强悍的针对Spring框架的支持。
其实在MyEclipse中已经提供了针对Spring框架的一些支持,集成了SpringIDE,但是这些对于那些针对Spring开发的开发者来说或许还不足够,他们需要的是更强大,更有针对性的开发工具。
由于Spring的广泛使用以及Spring开发者的呼声高涨,MyEclipseforSpring随之出现。
MyEclipseforSpring提供对SpringMVC的强大支持功能,针对Spring的更专业的编辑器,以及针对Spring项目的项目创建向导等功能,让Spring开发者可以更轻松的通过MyEclipseforSpring快速创建一个基于Spring的应用。
除此之外MyEclipseforSpring,这让MyEclipseforSpring比MyEclipse几乎是有过之而无不及。
整合SSH有手动的有自动的,要想彻底掌握,建议一个框架一个框架的学习,学习完三个框架自然就会整合了。
\ip协议简介
TCP/IP(传输控制协议/网际协议)是网络中使用的基本通信协议。
虽然从名字上看TCP/IP包括两种协议,即传输控制协议(TCP)和网际协议(IP),但是TCP/IP实际上是一组协议[4]。
它是异构网络互连的通信协议,通过它可以实现各种异构网络或异种机之间的互联通信。
TCP/IP已成为当今计算机网络最成熟、应用最广的互联协议。
Internet采用的就是TCP/IP协议,网络上各种各样的计算机上只要安装了TCP/IP协议,它们之间就能相互通信。
运行TCP/IP协议的网络是一种采用包(分组)交换网络。
基于TCP/IP的参考模型将协议分成四个层次,它们分别是:
网络访问层、网际互连层、传输层(主机到主机)、和应用层。
应用层对应于OSI参考模型的高层,为用户提供所需要的各种服务,例如:
FTP、Telnet、DNS、SMTP等。
传输层对应于OSI参考模型的传输层,为应用层实体提供端到端的通信功能。
该层定义了两个主要的协议:
传输控制协议(TCP)和用户数据报协议(UDP)。
TCP协议提供的是一种可靠的、面向连接的数据传输服务;而UDP协议供的是不可靠的、无连接的数据传输服务。
网际互联层主要解决主机到主机的通信问题。
该层有四个主要协议:
网际协议(IP)、地址解析协议(ARP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)。
IP协议是网际互联层最重要的协议,它提供的是一个不可靠、无连接的数据报传递服务。
网络访问层与OSI参考模型中的物理层和数据链路层相对应。
事实上,TCP/IP本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络访问层进行连接[1]。
网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。
Socket通常用来实现客户方和服务方的连接。
Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket由一个IP地址和一个端口号唯一确定。
但是,Socket所支持的协议种类也不光TCP/IP一种,因此两者之间是没有必然联系的。
在Java环境下,Socket编程主要是指基于TCP/IP协议的网络编程[2]。
一般而言,socket大部分应用于服务器与客户端的连接与通信,本系统虽然有服务器,但并不实际参与用户间的交流和文件传输,只起到辅助作用,所以在文件传输时客户端与客户端之间其实是互为服务器的,图2-1是从服务器与客户端之间的关系来描述socket通信机制。
图2-2socket通讯机制
,分别用来表示双向连接的客户端和服务端。
这是两个封装得非常好的类。
首先是socket类,其表示TCP连接的客户方,代表了通信的一方,常用的构造方法有:
publicSocket(InerAddressaddress,intport)throwIOException[3]
publicSocket(Stringhost,intport)throwsUnknownHostException,IOException
从上述定义克制,在引用Socket构造方法是,需要指定两个参数,即“服务器”程序所在的IP地址和其监听的端口号。
创建对象是若发生I/O错误,则构造方法需抛出IOException异常。
上述近视通信的一方即客户端,若要真正完成通信,还需要相应的、,常用构造方法为:
publicServerSocket(intport)throwsIOException[3]
该构造方法是常见一个ServerSocket对象,并绑定到所指定的端口上。
有了该对象,就可以完成旗舰厅端口和等待连接的功能。
3设计方案介绍
现行业务系统描述:
目前各种文件资源交流的主要方式可以分为三种:
(1)通过局域网内主机之间以文件共享后再经过复制,粘贴方式实现。
(2)依靠可移动磁盘的两次信息转移实现。
(3)通过Internet邮件方式实现。
此三种方法并非不可行,但它们都需要花费较长的时间以及安全性也得不到保证,工作效率将在很大程度上受到限制。
如果通过局域网内主机之间复制粘贴来实现文件资源共享,将浪费大量的网络带宽,极大程度上影响了网内用户的工作效率,甚至导致用户不能正常工作;如果依靠移动磁盘实现文件的共享,将花费大量的金钱,而文件较大移动磁盘容量不足的情况下会令人极为头疼,何况移动磁盘是病毒传播的重要途径;如果通过Internet邮件方式实现,用户需要接入Internet服务器,这种方式对远程服务器有非常大的依赖性,即使1KB的文件都要经历极度繁琐的路径,不能彻底实现点对点的即时交流,文件较大的情况下就不言而喻了。
最重要的是,在如今病毒黑客横行的网络世界中,信息的安全性也得不到保证。
综上所述,依靠Internet网络等方式实现文件资源交互的准确性,快速性及安全性远达不到理想的要求。
现行系统存在的主要问题分析:
针对企业来说,提高工作效率是企业的一个重心;降低成本是企业赢取最大利益的重要方式;保证信息安全却是可能影响企业生死存亡的关键。
企业需要对各种因素有足够深刻的认识才可能实现最终目标---盈利。
而传统的文件资源交互方式却存在很多的问题,大致可以分为:
一、不能有效地降低文件交互成本;二、文件交换过程过于繁琐;三、内部机密资料得不到安全保证;四、文件交互的准确性得不到更本保证。
解决方案:
解决当前问题的方案主要是指在允许的成本、性能要求下,分析系统实施的可行性,提出功能实现的依据,包括其简单性,安全性以及经济可行性。
根据企业简单快速,安全的资源共享等要求,提出以下四种解决方案:
1)操作简单性方案:
开发的系统需要有以下特点:
Windows友好的用户界面和系统快速的应用方法,简单易操作,不需对使用人员进行培训,可以使用户很好的掌握。
对传输文件过程中的文件的载入设置都是非常简单可行,比如:
如果用户忘记选择文件接收者的时候系统会自动提示“请选择接收用户”要求用户选择主机而不导致错误出现而引发的不便,这样就大大提高工作效率。
而且开发的系统应该简单易操作,易维护,减少了不必要的麻烦。
对于家庭局域网以及一些比较简单的中小企业网,系统必须做到在实际应用中较为成功。
系统应为用户提供Windows所一贯坚持的非常友好、操作简单的用户界面。
2)传输安全性方案:
系统开发完成后,能有效地使内部资源与外网的完全隔离,从而保证了内部机密文件的安全性。
3)经济可行性方案:
系统开发完成必须作到提高文件共享效率,不管是在资金上还是效率上都能达到预期的效果的。
最重要的一点就是:
使用户避免花费高额的资金去购买各种移动磁盘甚至是通过Internet邮件方式,使得用户方便的同时,也让信息少走了不少“弯路”。
4)快速准确性方案:
鉴于系统的目标要求和特点,能够保证快速准确地实现文件共享。
综合上述,本设计在WindowsXP操作系统下,以中文版MyEclipseforSpring为开发工具,以C/S为系统功能结构,基于点对点的TCP/IP协议理论,通过Socket套节字连接客户端与服务器实现文件及文件夹传输。
彻底避免了文件交换过程与外部网络的接触,实现快速的文件资源共享。
并能够确保内部文件的机密性,能够在很大程度上有效地提高工作效率。
、客户器功能介绍
本系统服务器的主要功能是供已登录用户获取其他登录用户的ip地址,并不真正参与客户端双方的语言交流与文件传输,也就是说当获取到要传送的对方ip之后,即使服务器关闭也不会影响此时的双方,双方依旧可以交流和传输文件;只不过其他用户要向某人传输文件时不能再简单的获取ip地址了。
换句话说当已知对方ip之后即使不登陆服务器或登陆服务器失败照样也可以完成所有可以完成的操作。
服务器登陆界面如错误!
未找到引用源。
。
图3-1服务器界面
客户端的程序是整个系统程序的核心,它提供了与另一端连接到交流、文件传输的所有功能。
用户通过客户端程序登陆到服务器,从而获得已登录用户列表,选择要连接的用户名称,获取其ip地址,然后连接,最后与之进行交流或传输文件。
若客户端因某些原因不能登录服务器,那么只要得到对方ip也照样可以与对方通讯。
需要注意的是,本系统的连接属于单向连接,即A用户连接B用户之后,A可以对B进行单向信息传输,若B需要与与A通讯则B必须再与A连接。
用户登陆界面如图3-2登陆之后的客户端界面如图3-3。
图3-4客户端登陆界面
图3-5客户端界面
4实现过程分析
图4-1系统通讯过程图
注:
图中箭头方向表示信息流向。
、客户端通讯过程设计分析
,,完成与用户连接和监听已登录用户的功能。
(用户名和ip地址)显示在服务器界面上。
下边是此文件中获取用户信息并显示的函数。
publicvoidrefreshList()
{
//更新在线用户列表的业务处理代码
Vectorv=newVector();
intsize=();
for(inti=0;i {//遍历在线列表 ServerAgentThreadtempSat=(ServerAgentThread)(i); Stringtemps=().toString(); temps=temps+"--"+()+"上线";//获得所需信息 (temps);//添加到Vector中 } (v);//更新列表数据 } ,创建输入输出流完成与客户端的具体链接和信息交流,即从客户端获取用户信息(包括用户名和ip地址)加入到用户列表中并刷新服务器上用户列表,同时把最新用户名列表发送给客户端,此外还要完成客户端发来的查找相应用户名的ip地址的请求。 两个功能的主要函数如下: publicvoidnick_name(Stringmsg) { try { Stringname=(13);//获得用户的用户名 (name);//用用户名称给该线程取名 Vectorv=;//获得在线用户列表 booleanisChongMing=false; intsize=();//获得用户列表的大小 for(inti=0;i {//遍历列表,查看是否已经有该用户名 ServerAgentThreadtempSat=(ServerAgentThread)(i); if(().equals(name)) { isChongMing=true;//有重名,将标志位设为true break; } } if(isChongMing==true)//如果重名 { ("<#NAME_CHONGMING#>");//将重名信息发送给客户端 ();//关闭数据输入流 ();//关闭数据输出流 ();//关闭Socket flag=false;//终止该服务器代理线程 } else//如果不重名 { (this);//将该线程添加到在线列表 ();//刷新服务器在线信息列表 StringnickListMsg=""; size=();//获得在线列表大小 for(inti=0;i { ServerAgentThreadtempSat=(ServerAgentThread)(i); nickListMsg=nickListMsg+"|"+(); }//将在线列表内容住组织成字符串 nickListMsg="<#NICK_LIST#>"+nickListMsg; Vectortempv=; size=(); for(inti=0;i {//遍历在线列表 ServerAgentThreadsatTemp=(ServerAgentThread)(i); (nickListMsg);//将最新的列表信息发送到各个客户端 if(satTemp! =this) {//给其他客户端发送新用户上线的信息 ("<#MSG#>"+()+"上线了..."); } } } } catch(IOExceptione) { (); } } publicvoidfindUser(Stringmsg){ try{ ("msg: "+msg); Stringname=(7,());//获得接收方的名字 Vectorv=;//获得在线用户列表 intsize=();//获得在线用户列表的大小 for(inti=0;i S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 论文 基于 socket 文件传输 系统管理 资料