简单的及时通信软件.doc

上传人:sk****8 文档编号:3160021 上传时间:2019-05-23 格式:DOC 页数:15 大小:228.50KB
下载 相关 举报
简单的及时通信软件.doc_第1页
第1页 / 共15页
简单的及时通信软件.doc_第2页
第2页 / 共15页
简单的及时通信软件.doc_第3页
第3页 / 共15页
简单的及时通信软件.doc_第4页
第4页 / 共15页
简单的及时通信软件.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、河南理工大学计算机科学与技术学院课程设计报告2014 2015 学年第一学期课程名称 计算机网络 设计题目 简单的及时通信软件 姓 名 郝腾宇 学 号 311209010312 专业班级 计算机 12-3 指导教师 李 莹 莹 2015 年 1 月 8 日简单的及时通信软件2目录一、任务分析与方案设计 .11任务分析 .12.方案设计 .1二、需求分析 .21.功能需求分析 .22数据需求分析 .23性能需求分析 .34运行需求分析 .3三、开发环境与工具 .41.设计环境 .41.1 eclipse 开发平台介绍 .42.基础知识 .42.1java Socket 网络编程简介 .42.2

2、套接字的介绍 .52.3 TCP/IP 协议简介 .6四、关键技术与理论 .61.JAVA 编程技术 .62.Java Socket 网络编程接口 .7五、相关图解及程序 .81.体系结构设计 .82.具体功能模块的分析 .8六、测试及结果分析 .9七、心得体会 .12八、参考文献 .14简单的及时通信软件3一、任务分析与方案设计1任务分析计算机网络被应用于我们生活中的方方面面,可以说是网络让我们的生活变得更加美好,更加方便和快捷,我们的生活离不开网络基于局域网的即时通信软件的核心技术其实与基于 Internet 的即时通信软件的设计技术是一样的,只是规模比较小。基于 Internet 的通信

3、工具一般采用TCP 或者 UDP 协议来实现的,开发技术已经非常成熟,它们不仅实现了即时聊天、文件传输等功能,而且还能够实现即时视频、语音聊天功能等。在局域网内,这类软件的设计比在 Internet 中设计更为简单。因为 Internet 是网络中的网络,结构更为复杂,遇到的情况要比在局域网中还要多。所以说局域网的聊天工具的设计要相对简单些。而且即时通信是一个终端连往一个即时通信网络的服务。即时通信不同于e-mail 在于它的交谈是实时的。大部分的即时通信服务提供了 presence awareness 的特性显示联络人名单,联络人是否在线与能否和联络人交谈。2.方案设计程序采用 JAVA 编

4、程,利用 java 强大的基础类库,调用 java 中界面开发的swing 和网络编程的 net 函数群来完成本次的 java socket(网络套接字)网络即时通信工具的开发。在 java 中,可以把发送的信息看成是一个一个的对象,当我们利用 socket 链接把客户端和服务器链接起来以后,他们之间就可以以对象流的形式发送彼此需要通信的信息了。在 java 的网络编程中,最为核心的就是客户端和服务器相互取得 socket 的链接,只要能够能够取得链接,其他的工作基本上都是 java 的面向对象的编程思想去完成一些网络通讯的业务逻辑的处理。简单的及时通信软件4二、需求分析1.功能需求分析1)用

5、户端之间的信息发送,本程序需要实现的最基本的功能。用户在界面上可以将自己需要发送的信息填入相应的对话框中,点击发送按钮后,可以将信息正常的发送给相应的其它用户,这个过程中的客户端与客户端之间使用点对点发送信息,预计利用 TCP/IP 协议中的 UDP 协议,在本程序中共需要 3 个端口,此功能预计使用 3 号端口。 (2)在线用户主机 IP 列表的维护。在用户发送信息之前,需要选择相应的目的地端 IP,这也就需要客户端拥有在线用户主机的 IP 地址,这个在线主机列表的维护是需要客户端定时自动向服务器端发送信息,服务器端收集并维护在线用户列表,再发送回客户端。需要在客户端和服务器端都使用定时器来

6、完成此功能。此功能预计使用 1、2 号端口。 (3)在 C/S 模式中,服务器与客户端是相互依赖的。在客户端启用以后,需要查看服务器端是否在线,服务器在线才能正常使用客户端,如果服务器不在线,则在检测一定次数以后自动退出客户端程序。在使用过程中,客户端在指定时间内未向服务器端发送信息的,服务器认为客户端下线;客户端在一定时间内未收到服务器端信息的,认为服务器已经下线,则提示用户并建议退出,在用户一定时间后没有退出的则自动关闭客户端程序。2数据需求分析 (1)客户端之间聊天信息。在控件上显示时格式化,更易于用户的查看自己发送或接收到的信息。 (2)在线用户聊天信息。服务器端存放在适当的空间中,在

7、发送给客户端时,对信息列表进行格式化,便于客户端提取信息。 (3)客户端向服务器端发送的确认在线信息。包括客户端刚刚启动时的初始化信息和在使用过程中的确认在线信息。 (4)其它程序内部可能需要设计的数据结构体。 简单的及时通信软件53性能需求分析 (1)可靠性高,能在由于系统问题或其它原因产生错误后,作出相对应处理,比如网络初始化失败、服务器不在线等,可以提示用户安全退出本程序,在出现不可知的错误以后,可以尽量安全的退出程序。在程序的设计过程中,要求能尽可能多的设想到用户使用过程中可能发生的事件,并能在判断事件后做出相应的处理,使程序具有较高的容错性能2。 (2)宜操作性,程序简单易懂,容易上

8、手使用。设计界面是,简化界面的复杂性,模拟 QQ 等现有即时通讯工具的界面,使用户能很容易看懂并使用。 (3)开发文档易理解,保证以后自己二次开发或他人接手开发时,能够清晰的理解整个系统的设计思路和实现细节。 (4)模块化设计此软件的功能,不同的模块实现不同的功能,使得软件易于以后的维护与扩展,在以后可以更好的完善本软件的功能,更方便于在工作中的应用。 4运行需求分析 (1)用户界面 程序较小,启动速度快。可在网络中使用,有注册功能,需进行用户登录。启动后的应用界面要清爽,设计要简单明了,要具有较高的易用性。 (2)故障处理 在遇到可预知的故障与情况时,能提示用户并自动退出;在遇到不可预知的故

9、障时能安全退出。三、开发环境与工具1.设计环境开发程序的操作系统:Windows7(在 Windows XP、2000 里也可以)简单的及时通信软件6编译工具:eclipse程序工程:JAVA 工程,Server 和 Client网络环境:局域网(或互联网上运用,只要安装客户端并且知道服务器端的IP)1.1eclipse 开发平台介绍Eclipe 是著名的跨平台的自由集成开发环境(IDE) 。主要用来 Java 语言开发。Eclipse 的本身只是一个框架平台,但是众多插件的支持,使得 Eclipse 拥有较佳的灵活性。许多软件开发商都以 Eclipse 为框架开发自己的 IDE。另外由于 e

10、clipse 是开源的,所以得到了广大用户的认可。Eclipse 也于 2001 年11 月被它的开发公司 IBM 公司贡献给开源社区,现在它由非营利软件供应商联盟 Eclipse 基金会(Eclipse Foundation)管理。2.基础知识2.1java Socket 网络编程简介 Socket 有两种主要的操作方式:面向连接的和无连接的。面向连接的 sockets 操作就像一部电话,他们必须建立一个连接和一人呼叫。所有的事情在到达时的顺序与它们出发时的顺 序时一样。无连接的 sockets 操作就像是一个邮件投递,没有什么保证,多个邮件可能在到达 时的顺序与出发时的顺序不一样。 到底用

11、哪种模式是邮应用程序的需要决定的。如果可靠性更重要的话,用面向连接的操作会好一些.比如文件服务器需要他们的数据的正确性和有序性。如果一些数据丢失了,系统的有效性将会失去。一些服务器,比如间歇性地发送一些数据块,如果数据丢了的话,服务器并不想要再重新发过一次,因为当数据到达的时候,它可能已经过时了.确保数据的有序性和正确性需要额外的操作的内存消耗,额外的费用将会降低系统的回应速率。无连接的操作使用数据报协议。一个数据报是一个独立的单元,它包含了所有的这次投递的信息。把它想象成一个信封吧,它有目的地址和要发送的内简单的及时通信软件7容。这个模式下的 socket 不需要连接一个目的的 socket

12、,它只是简单地投出数据报。无连接的操作是快速的和高效的,但是数据安全性不佳。面向连接的操作使用 TCP 协议。一个这个模式下的 socket 必须在发送数据之前与目的地的 socket 取得一个连接。一旦连接建立了,sockets 就可以使用一个流接口:打开(-读-写-关闭) 。所有的发送的信息都会在另一端以同样的顺序被接收.面向连接的操作比无连接的操作效率更低,但是数据的安全性更高。java 降低了建立一个 sockets 程序的难度。每一个传输模式都被封装到了不同的类中。面向连接的类将会首先被我们讨论。到底用哪种模式是邮应用程序的需要决定的。如果可靠性更重要的话,用面向连接的操作会好一些。

13、比如文件服务器需要他们的数据的正确性和有序性。如果一些数据丢失了,系统的有效性将会失去。一些服务器,比如间歇性地发送一些数据块,如果数据丢了的话,服务器并不想要再重新发过一次。因为当数据到达的候,它可能已经过时了。确保数据的有序性和正确性需要额外的操作的内存消耗,额外的费用将会降低系统的回应速率. 2.2 套接字的介绍多个 TCP 连接或多个应用程序进程可能需要通过同一个 TCP 协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与 TCPIP 协议交互提供了称为套接字(Socket)的接口。套接字,是支持 TCP/IP 的网络通信的基本操作单元,可以看做是不同主

14、机之间的进程进行双向通信的端面点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程非常非常简单的举例说明下:Socket=Ip address+ TCP/UDP port. 应用层通过传输层进行数据通信时,TCP 和 UDP 会遇到同时为多个应 用 程 序 进程提供并发服务的问题。 2.3 TCP/IP 协议简介TCP/IP 协议实际上就是在物理网上的一组完整的网络协议。其中 TCP 是提供传输层服务,而 IP 则是提供网络层服务。TCP/IP 主要包括以下协议:IP:网间协议(Internet Protocol) ,负责主机间数据的路由和网络上数据简单的及时通信软件8的存

15、储。同时为 ICMP,TCP,UDP 提供分组发送服务。用户进程通常不需要涉及这一层。ICMP:网间报文控制协议(Internet Control Message Protocol)此协议处理网关和主机的差错和传送控制。TCP: 传输控制协议(Transmission Control Protocol)这是一种提供给用户进程的可靠的全双工字节流面向连接的协议。它要为用户进程提供虚电路服务,并为数据可靠传输建立检查。四、关键技术与理论1.JAVA 编程技术Java 是 Sun 公司推出的一种编程语言。它是一种通过解释方式来执行的语言,语法规则和 C+类似。同时,Java 也是一种跨平台的程序设计

16、语言。用 Java 语言编写的程序叫做“Applet”(小应用程序),用编译器将它编译成类文件后,将它存在 WWW 页面中,并在 HTML 档上作好相应标记,用户端只要装上 Java 的客户软件就可以在网上直接运行“Applet” 。 Java 非常适合于企业网络和Internet 环境,现在已成为 Internet 中最受欢迎、最有影响的编程语言之一。Java 有许多值得称道的优点,如简单、面向对象、分布式、解释性、可靠、安全、结构 2.Java Socket 网络编程接口事实上网络编程,简单的理解就是两台计算机相互通讯数据而已。对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显

17、得简单的多了。Java sdk 提供一些相对简单的 api 来完成这些工作,socket 就是其中之一。对于 java 而言,这些 api 存在于 这个包里面。因此,只要导入这个包就可以准备网络编程了。网络编程的基本模型就是客户机到服务器模型。简单的说,就是两个进程之间相互通讯,然后其中一个必须提供一个固定的位置,而另一个则只需要知道这个固定的位置,并去建立两者之间的联系。然后简单的及时通信软件9完成数据的通讯就可以了。这里提供固定位置的通常称为服务器,而建立联系的通常叫做客户端。基于这个简单的模型,就可以进入网络编程.对于 java 而言已经简化了 socket 的编程接口。首先需要确定有

18、关提供固定位置的服务方是如何建立的。java 提供了 serversocket 来对其进行支持。事实上当创建该类的一个实力对象并提供一个端口资源,就建立了一个固定位置可以让其他计算机来访问。serversocket server=new serversocket(6789);这里稍微要注意的是端口的分配必须是唯一的。因为端口是为了唯一标识每台计算机唯一服务的。另外端口号是从 065535 之间的,前 1024 个端口已经被tcp/ip 作为保留端口,因此,分配的端口只能是 1024 个之后的。有了固定位置,现在所需要的就是一根连接线了。该连接线由客户方首先提出要求。因此java 同样提供了一个

19、 socket 对象来对其进行支持。只要客户方创建一个socket 的实例对象进行支持就可以了。socket client=new socket(inetaddress.getlocalhost(),5678);客户机必须知道有关服务器的 ip 地址。对于这一点,java 也提供了一个相关的类 inetaddress。该对象的实例必须通过它的静态方法来提供。它的静态方法主要提供了得到本机 ip 和通过名字或 ip 直接得到 inetaddress 的方法。i/o 操作总是和网络编程息息相关的。因为底层的网络是继续数据的。除非远程调用,处理问题的核心在执行上。否则,数据的交互还是依赖于 io 操

20、作的。所以,你也必须导入 java.io 这个包。java 的 io 操作也不复杂。它提供了针对于字节流和 unicode 的读者和写者,然后也提供了一个缓冲用于数据的读写。bufferedreader in=new bufferedreader(new inputstreamreader(server.getinputstream(); printwriter out=new printwriter(server.getoutputstream();上面两句就是建立缓冲并把原始的字节流转变为 unicode 可以操作。而原始的字节流来源于 socket 的两个方法,getinputstrea

21、m()和 getoutputstream()方法,分别用来得到输入和输出。简单的及时通信软件10五、相关图解及程序1.体系结构设计一般的通信工具,都采用客户端/服务器体系结构。客户端/服务器的结构包含:客户端和服务端。客户端访问和处理服务器上的数据,服务器接收和处理客户端的数据请求。这种模式的好处就是可以将一个系统分为两个独立的部分进行开发设计,便于软件开发。而且也把一个软件的功能交给两个部分去完成,则更加有效的利用了系统资源。本程序中也采用了简单的客户端/服务器模式。由于本程序比较简单,仅演示客户端与服务端进行通信。2.具体功能模块的分析由于该系统采用 C/S 模式,所以对功能模块进行划分时,就需要分服务器和客户端两部分进行。由于服务器的主要功能是等待接收并反馈客户端的信息,所以服务器需要信息输出模块和通信模块。其中通信模块包含信息发送模块和信息接收模块。而信息输出模块要做到当信息发生改变时及时更新。客户端同样也需要通信模块和信息输出模块,同时要互相通信,就要具备输入输出。具体模块划分见下图:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 建筑建材

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。