简单的即时通信软件_第1页
简单的即时通信软件_第2页
简单的即时通信软件_第3页
简单的即时通信软件_第4页
简单的即时通信软件_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、河南理工大学万方科技学院课程设计报告2015 2016学年第二学期课程名称计算机网络设计题目 简单的即时通信软件姓 名学 号专业班级 15级计科专升本指导教师张静2016年6月25日 TOC o 1-5 h z HYPERLINK l bookmark24 o Current Document 一、任务分析与方案设计0 HYPERLINK l bookmark28 o Current Document 任务分析1 HYPERLINK l bookmark31 o Current Document 方案设计1 HYPERLINK l bookmark35 o Current Document 二

2、、需求分析1 HYPERLINK l bookmark39 o Current Document 功能需求分析 1 HYPERLINK l bookmark46 o Current Document 数据需求分析2 HYPERLINK l bookmark53 o Current Document 性能需求分析2 HYPERLINK l bookmark61 o Current Document 运行需求分析3 HYPERLINK l bookmark66 o Current Document 三、开发环境与工具3 HYPERLINK l bookmark70 o Current Docume

3、nt 设计环境3 HYPERLINK l bookmark74 o Current Document 1.1 eclipse开发平台介绍4基础知识4 HYPERLINK l bookmark77 o Current Document 2.1java Socket网络编程简介 4 HYPERLINK l bookmark82 o Current Document 2.2套接字的介绍 5 HYPERLINK l bookmark85 o Current Document 2.3 TCP/IP协议简介 5 HYPERLINK l bookmark88 o Current Document 四、关键技

4、术与理论6 HYPERLINK l bookmark92 o Current Document JAVA编程技术6 HYPERLINK l bookmark96 o Current Document Java Socket 网络编程接口 6 HYPERLINK l bookmark100 o Current Document 五、相关图解及程序7 HYPERLINK l bookmark104 o Current Document 体系结构设计7 HYPERLINK l bookmark107 o Current Document 具体功能模块的分析8六、测试及结果分析10 HYPERLINK

5、 l bookmark111 o Current Document 七、心得体会12 HYPERLINK l bookmark114 o Current Document 八、 参考文献13一、任务分析与方案设计1 .任务分析计算机网络被应用于我们生活中的方方面面,可以说是网络让我们的生活变 得更加美好,更加方便和快捷,我们的生活离不开网络基于局域网的即时通信软件的核心技术其实与基于Internet的即时通信软 件的设计技术是一样的,只是规模比较小。基于Internet的通信工具一般采用 TCP或者UDP协议来实现的,开发技术已经非常成熟,它们不仅实现了即时聊天、 文件传输等功能,而且还能够实

6、现即时视频、语音聊天功能等。在局域网内,这 类软件的设计比在Internet中设计更为简单。因为Internet是网络中的网络, 结构更为复杂,遇到的情况要比在局域网中还要多。所以说局域网的聊天工具的 设计要相对简单些。而且即时通信是一个终端连往一个即时通信网络的服务。即时通信不同于 e-mail在于它的交谈是实时的。大部分的即时通信服务提供了presenceawareness的特性一一显示联络人名单,联络人是否在线与能否和联络人交谈。方案设计程序采用JAVA编程,利用java强大的基础类库,调用java中界面开发的 swing和网络编程的net函数群来完成本次的java socket (网络

7、套接字)网络 即时通信工具的开发。在java中,可以把发送的信息看成是一个一个的对象, 当我们利用socket链接把客户端和服务器链接起来后,他们之间就可以以对象 流的形式发送彼此需要通信的信息了。在java网络编程中,最为核心的就是客 户端和服务器相互取得socket的链接,只要能够能够取得链接,其他的工作基 本上都是java的面向对象的编程思想去完成一些网络通讯的业务逻辑的处理。二、需求分析功能需求分析用户端之间的信息发送,本程序需要实现的最基本的功能。用户在界面上 可以将自己需要发送的信息填入相应的对话框中,点击发送按钮后,可以将信息 正常的发送给相应的其它用户,这个过程中的客户端与客户

8、端之间使用点对点发 送信息,预计利用TCP/IP协议中的UDP协议,在本程序中共需要3个端口,此 功能预计使用3号端口。在线用户主机IP列表的维护。在用户发送信息之前,需要选择相应的目的 地端IP,这也就需要客户端拥有在线用户主机的IP地址,这个在线主机列表的 维护是需要客户端定时自动向服务器端发送信息,服务器端收集并维护在线用户 列表,再发送回客户端。需要在客户端和服务器端都使用定时器来完成此功能。 此功能预计使用1、2号端口。在C/S模式中,服务器与客户端是相互依赖的。在客户端启用以后,需要 查看服务器端是否在线,服务器在线才能正常使用客户端,如果服务器不在线, 则在检测一定次数以后自动退

9、出客户端程序。在使用过程中,客户端在指定时间 内未向服务器端发送信息的,服务器认为客户端下线;客户端在一定时间内未收 到服务器端信息的,认为服务器已经下线,则提示用户并建议退出,在用户一定 时间后没有退出的则自动关闭客户端程序。2 .数据需求分析客户端之间聊天信息。在控件上显示时格式化,更易于用户的查看自己发 送或接收到的信息。在线用户聊天信息。服务器端存放在适当的空间中,在发送给客户端时, 对信息列表进行格式化,便于客户端提取信息。客户端向服务器端发送的确认在线信息。包括客户端刚刚启动时的初始化 信息和在使用过程中的确认在线信息。其它程序内部可能需要设计的数据结构体。性能需求分析可靠性高,能

10、在由于系统问题或其它原因产生错误后,作出相对应处理, 比如网络初始化失败、服务器不在线等,可以提示用户安全退出本程序,在出现 不可知的错误以后,可以尽量安全的退出程序。在程序的设计过程中,要求能尽 可能多的设想到用户使用过程中可能发生的事件,并能在判断事件后做出相应的 处理,使程序具有较高的容错性能。(2)宜操作性,程序简单易懂,容易上手使用。设计界面是,简化界面的复杂 性,模拟QQ等现有即时通讯工具的界面,使用户能很容易看懂并使用。(3)开发文档易理解,保证以后自己二次开发或他人接手开发时,能够清晰的 理解整个系统的设计思路和实现细节。(4)模块化设计此软件的功能,不同的模块实现不同的功能,

11、使得软件易于以 后的维护与扩展,在以后可以更好的完善本软件的功能,更方便于在工作中的应 用。4 .运行需求分析(1)用户界面程序较小,启动速度快。可在网络中使用,有注册功能,需进行用户登录。 启动后的应用界面要清爽,设计要简单明了,要具有较高的易用性。(2)故障处理在遇到可预知的故障与情况时,能提示用户并自动退出;在遇到不可预知的 故障时能安全退出。三、开发环境与工具设计环境开发程序的操作系统:Windows?(在Windows XP、2000里也可以)编译工具:eclipse程序工程:JAVA工程,Server和Client网络环境:局域网(或互联网上运用,只要安装客户端并且知道服务器端的I

12、P)l.leclipse开发平台介绍Eclipe是著名的跨平台的自由集成开发环境(IDE)。主要用来Java语言开 发。Eclipse的本身只是一个框架平台,但是众多插件的支持,使得Eclipse拥有 较佳的灵活性。许多软件开发商都以Eclipse为框架开发自己的IDE。另外由于eclipse是开源的,所以得到了广大用户的认可。Eclipse也于2001 年11月被它的开发公司IBM公司贡献给开源社区,现在它由非营利软件供应商 联盟 Eclipse 基金会(Eclipse Foundation)管理。基础知识2.1java Socket网络编程简介Socket有两种主要的操作方式:面向连接的和

13、无连接的。面向连接的sockets 操作就像一部电话,他们必须建立一个连接和一人呼叫。所有的事情在到达时的 顺序与它们出发时的顺 序时一样。无连接的sockets操作就像是一个邮件投递, 没有什么保证,多个邮件可能在到达时的顺序与出发时的顺序不一样。到底用哪种模式是邮应用程序的需要决定的。如果可靠性更重要的话,用面 向连接的操作会好一些.比如文件服务器需要他们的数据的正确性和有序性。如 果一些数据丢失了,系统的有效性将会失去。一些服务器,比如间歇性地发送一 些数据块,如果数据丢了的话,服务器并不想要再重新发过一次,因为当数据到 达的时候,它可能已经过时了 .确保数据的有序性和正确性需要额外的操

14、作的内 存消耗,额外的费用将会降低系统的回应速率。无连接的操作使用数据报协议。一个数据报是一个独立的单元,它包含了所 有的这次投递的信息。把它想象成一个信封吧,它有目的地址和要发送的内容。 这个模式下的socket不需要连接一个目的的socket,它只是简单地投出数据 报。无连接的操作是快速的和高效的,但是数据安全性不佳。面向连接的操作使用TCP协议。一个这个模式下的socket必须在发送数 据之前与目的地的socket取得一个连接。一旦连接建立了,sockets就可以使用 一个流接口:打开(-读-写-关闭)。所有的发送的信息都会在另一端以同样的顺 序被接收.面向连接的操作比无连接的操作效率更

15、低,但是数据的安全性更高。java降低了建立一个sockets程序的难度。每一个传输模式都被封装到了 不同的类中。面向连接的类将会首先被我们讨论。到底用哪种模式是邮应用程序 的需要决定的。如果可靠性更重要的话,用面向连接的操作会好一些。比如文件 服务器需要他们的数据的正确性和有序性。如果一些数据丢失了,系统的有效性 将会失去。一些服务器,比如间歇性地发送一些数据块,如果数据丢了的话,服 务器并不想要再重新发过一次。因为当数据到达的候,它可能已经过时了。确保 数据的有序性和正确性需要额外的操作的内存消耗,额外的费用将会降低系统的 回应速率.2.2套接字的介绍多个TCP连接或多个应用程序进程可能需

16、要通过同一个TCP协议端口传输 数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与 TCP / IP协议交互提供了称为套接字(Socket)的接口。套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机 之间的进程进行双向通信的端面点,简单的说就是通信的两方的一种约定,用套 接字中的相关函数来完成通信过程非常非常简单的举例说明下:Socket=Ipaddress+ TCP/UDP port.应用层通过传输层进行数据通信时,TCP和UDP会遇 到同时为多个应用程序进程提供并发服务的问题。2.3 TCP/IP协议简介TCP/IP协议实际上就是在物理网上的一组完整

17、的网络协议。其中TCP是提 供传输层服务,而IP则是提供网络层服务。TCP/IP主要包括以下协议:IP:网间协议(Internet Protocol),负责主机间数据的路由和网络上数据 的存储。同时为ICMP,TCP,UDP提供分组发送服务。用户进程通常不需要涉及 这一层。ICMP:网间报文控制协议(Internet Control Message Protocol)此协议处 理网关和主机的差错和传送控制。TCP:传输控制协议(Transmission Control Protocol)这是一种提供给用 户进程的可靠的全双工字节流面向连接的协议。它要为用户进程提供虚电路服 务,并为数据可靠传输

18、建立检查。四、关键技术与理论JAVA编程技术Java是Sun公司推出的一种编程语言。它是一种通过解释方式来执行的语 言,语法规则和C+类似。同时,Java也是一种跨平台的程序设计语言。用Java 语言编写的程序叫做“Applet”(小应用程序),用编译器将它编译成类文件后, 将它存在WWW页面中,并在HTML档上作好相应标记,用户端只要装上Java的客 户软件就可以在网上直接运行“Applet”。Java非常适合于企业网络和Internet 环境,现在已成为Internet中最受欢迎、最有影响的编程语言之一。Java有 许多值得称道的优点,如简单、面向对象、分布式、解释性、可靠、安全、结构Ja

19、va Socket网络编程接口事实上网络编程,简单的理解就是两台计算机相互通讯数据而已。对于程序 员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了。 Java sdk提供一些相对简单的api来完成这些工作,socket就是其中之一。对于java而言,这些api存在于这个包里面。因此,只要导入这 个包就可以准备网络编程了。网络编程的基本模型就是客户机到服务器模型。简 单的说,就是两个进程之间相互通讯,然后其中一个必须提供一个固定的位置, 而另一个则只需要知道这个固定的位置,并去建立两者之间的联系。然后完成数 据的通讯就可以了。这里提供固定位置的通常称为服务器,而建立联系的通常叫

20、 做客户端。基于这个简单的模型,就可以进入网络编程.对于java而言已经简化了 socket的编程接口。首先需要确定有关提供固定 位置的服务方是如何建立的。java提供了 serversocket来对其进行支持。事实 上当创建该类的一个实力对象并提供一个端口资源,就建立了一个固定位置可以 让其他计算机来访问。serversocket server=new serversocket(6789);这里稍微要注意的是端口的分配必须是唯一的。因为端口是为了唯一标识每 台计算机唯一服务的。另外端口号是从065535之间的,前1024个端口已经被 tcp/ip作为保留端口,因此,分配的端口只能是1024个

21、之后的。有了固定位置, 现在所需要的就是一根连接线了。该连接线由客户方首先提出要求。因此java 同样提供了一个socket对象来对其进行支持。只要客户方创建一个socket的实 例对象进行支持就可以了。socket client二new socket(inetaddress.getlocalhost(), 5678);客户机必须知道有关服务器的ip地址。对于这一点,java也提供了一个相 关的类inetaddress。该对象的实例必须通过它的静态方法来提供。它的静态方 法主要提供了得到本机ip和通过名字或ip直接得到inetaddress的方法。i/o操作总是和网络编程息息相关的。因为底层的

22、网络是继续数据的。除非 远程调用,处理问题的核心在执行上。否则,数据的交互还是依赖于io操作的。所以,你也必须导入java.io这 个包。java的io操作也不复杂。它提供了针对于字节流和Unicode的读者和写 者,然后也提供了一个缓冲用于数据的读写。bufferedreader in=new bufferedreader(new inputstreamreader(server.getinputstream();printwriter out=new printwriter(server.getoutputstream();上面两句就是建立缓冲并把原始的字节流转变为unicode可以操作。

23、而原始 的字节流来源于 socket 的两个方法,getinputstream()和 getoutputstream() 方法,分别用来得到输入和输出。五、相关图解及程序1.体系结构设计一般的通信工具,都采用客户端/服务器体系结构。客户端/服务器的结构包 含:客户端和服务端。客户端访问和处理服务器上的数据,服务器接收和处理客 户端的数据请求。这种模式的好处就是可以将一个系统分为两个独立的部分进行 开发设计,便于软件开发。而且也把一个软件的功能交给两个部分去完成,则更 加有效的利用了系统资源。具体功能模块的分析由于该系统采用c/s模式,所以对功能模块进行划分时,就需要分服务器和 客户端两部分进行

24、。由于服务器的主要功能是等待接收并反馈客户端的信息,所以服务器需要信 息输出模块和通信模块。其中通信模块包含信息发送模块和信息接收模块。而信 息输出模块要做到当信息发生改变时及时更新。客户端同样也需要通信模块和信 息输出模块,同时要互相通信,就要具备输入输出。具体模块划分见下图:监听客户端的通讯。接受客户端请求。服务器端开放端口,得带 每个客户端连接.客户端A发送信息客户端B发送信息六、测试及结果分析七、心得体会即时通信是是网络发展的必然趋势,它的技术仍然在不断的改进和蓬勃发展 中。本次设计虽然实现了简单的即时通信功能,但是从很多方面来说都是不完善 的:实现了字符聊天却没有实现多媒体即时通信;

25、实现了同步套接字聊天和异步 套接字传送文件却没有实现更科学的异步套接字聊天和同步套接字传送文件。由于之前没有学过Java,所以对Eclipse编程环境几乎是一无所知,在程序 编译过程中遇到的问题比较多,主要是对那些错误还有警告开始都不知道什么意 思,花了两天的时间在程序的调试上面。另外就是一些概念性的知识欠缺,尤其 是套接字编程原理,所以对程序的一些函数的功能用法有些模糊。其实遇到的种种问题主要是两方面的原因。一个是基础知识的掌握不够牢 固,概念的混淆,不能够很快的用最佳的方式去解决遇到的问题等等,都是由于 知识的不熟练导致。另一个就是Java部分知识的缺乏,导入文件还有一些参数 的选择都要查

26、询一下资料,主要是第一次操作这方面的知识。针对这些问题,主 要从两个方面着手处理应该,一方面是多对所学过的知识强化温习,做到熟能生 巧,温故知新。另一方面就是准备的不够充分,之前应该及早的对所需软件进行 熟悉,在以后的实习过程中需要注意。经过这次课程设计,我们收获了很多,也学习到了很多。使我对网络的 TCP/IP协议和网络中实现主机之间的相互通信的方法有了一定的了解和体会。 通过这次编程,也加深了对网络编程特别是WinSock编程的理解。同时对java 的一些编程技术的实现也有了更深入的了解。学到了到底一些功能要用哪些规定 的函数来实现,以及在用这些函数的时候要注意哪些东西,比如说,要引用规定 的函数包,设定规定的变量、组件,并且在引用的时候需要注意的东西等。同时 也深刻体会到SOCKET编程的基础性,多样化。由于与网络紧密联系,SOCKET 编程的也可能出现各种未知的问题,需要我

温馨提示

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

评论

0/150

提交评论