《软件工程课程设计方案Socket聊天系统》由会员分享,可在线阅读,更多相关《软件工程课程设计方案Socket聊天系统(16页珍藏版)》请在金锄头文库上搜索。
1、1 .前言1.2 .需求分析22.1 系统的功能需求2错误!未定义书签错误!未定义书签错误!未定义书签错误!未定义书签错误!未定义书签2.2 非功能需求:2错误!未定义书签。2.3 用例分析2错误!未定义书签错误!未定义书签错误!未定义书签3 .总体设计33.1 TCP服务器设置 3.3.2 分析类图43.3 顺序图5错误!未定义书签。错误!未定义书签。3.4 协作图5.错误!未定义书签。错误!未定义书签。4 .详细设计5.4.1 客户端设计5.4.2 服务端设计 6.4.3 多线程设计 6.5 .代码实现7.5.1 服务端设计 7.5.2 客户端设计 9.5.3 多线程12.错误!未定义书签
2、。错误!未定义书签。6 .运行与测试错误!未定义书签。6.1 用户登录界面156.2 输入端口界面156.3 服务器记录,在线的用户信息。 1.56.4 私聊1.5.错误!未定义书签。错误!未定义书签。错误!未定义书签。错误!未定义书签。6.5 群聊1.5.错误!未定义书签。错误!未定义书签。错误!未定义书签。7 .小结1.5.8 .参考文献16.1 .刖百随着互联网的快速发展,网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民 的青睐。目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有Netmeeting、腾讯QQMSN-Messager等等。该系统开发主要包括一个网络聊天
3、服务器程序和一个网络聊天客户程序两个方 面。前者通过Socket套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。 后者通过与服务器建立连接,来进行客户端与客户端的信息交流。其中用到了局域网通信机制的原理, 通过直接继承Thread类来建立多线程。开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server 模式)、网络编程的设计方法等。在网络编程中对信息的 读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些 基本的软件工程的方法。经过分析这些情况,该局域网聊天工具采用Eclipse为基
4、本开发环境和java 语言进行编写,首先可在短时间内建立系统应用原型,然后,对初始原型系统进行不断修正和改进, 直到形成可行系统本文通过java的Socket实现了一个基于局域网和网络的聊天室的程序的开发-基于java的C/S模式网络聊天室的设计与实现。C/S (Client/Server )结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势, 将任务合理分配到Client端和Server端来实现,降低了系统 的通讯开销。目前大多数应用软件系统都是Client/Server 形式的两层结构,由于现在的软件应用系 统正在向分布式的Wetfi用发展,W
5、ebffi Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。关键词:聊天 客户端 信息服务器端JavaC/S聊天系统2 .需求分析2.1 系统的功能需求,进行信息的传送,实现彼此的聊天,这也是本系统最基本的功能。,实现通讯的多元化,进行文件的传输。是通讯双方可以选择传送对方想获得的资料。2.2 非功能需求:,对经典的聊天程序的界面进行了学习和借鉴,模仿他们的界面和常用的操作。加密解密为了提高传输的安全性,进行加密操作。及时在
6、网络上被别人了窃听消息,也不能得到原始信息, 防止个人重要信息和隐私信息被盗。2.3 用例分析本系统显而易见的两个参与者:用户和管理员。从上面的需求里进行抽象和提取关键信息,在确定系统边界的情况下,选择最基本的用例,然后对用例进行描述和细化。使其能完全的描述系统的功能性需求。通过对参与者和用例的分析,确定他们的关系(包括参与者和参与者的关系,参与者和用例的关 系,用例之间的关系。)其中用例之间的关系是分析中的重点,如图私聊和群聊都有socket聊天的模块,所以可以确定的是包含关系。管理个人信息,包含了分组管理和用户信息管理,其中分组管理和 用户信息管理,是个人信息管理的子集,所以应该是泛化关系
7、。在文件传输的时候,可能会产生信息 的丢失,导致信息不完整,接收方不能完整收到发送方的消息,所以导致发送方重发信息。所以这是 扩展关系,因为只有在传输文件失败的时候,才能启用重传文件的模块。用户所参与的模块首先应该登录,在登录系统后,可以私聊和群聊来交流信息。用户可以管理自 己的信息进行修改自己的信息和管理自己的分组。 为了丰富系统的功能我,我们还特意实现了点歌功, 和传输文件吸引用户的眼光。3 .总体设计3.1 TCP服务器设置在T C P / I P协议族中,有两个互不相同的传输协议:T C P (传输控制协议)和U D P (用户数据报协议)。T CP为两台主机提供高可靠性的数据通信。
8、它所做的工作包括把应用程序交给它的数据 分成合适的小块交给下面的网络层, 确认接收到的分组,设置发送最后确认分组的超时时钟等。 由于 运输层提供了高可靠性的端到端的通信, 因此应用层可以忽略所有这些细节。 而另一方面,U D P则 为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。服务器客户机服务器和客户机通讯流程3.2 分析类图(系统整齐的分析类图)没有类是单独存在的,通常和别的类协作,创造比单独工作更大的语义。因此,除了捕获系统的词汇以外,还要将注意力集中到这些类是如何在一起工作的。 使用类
9、图来表达这种协作。确定你建模 的机制。机制代表了部分你建模的系统的一些功能和行为,这些功能和行为是一组类、接口和其他事物相互作用的结果。对于每个机制,确定类、接口和其他的参与这个协作的协作。同时确定这些事物 之间的关系。用场景来预排这些事物,沿着这条路你将发现模型中忽略的部分和定义错误的部分。确定用这些事物的内容来填充它们。对于类,开始于获得一个责任(类的职责),然后,将它转化为具体的属性和方法。3.3 顺序图用户在进入系统前首先要输入彼此通讯的端口号,由于客户机和服务器都是本机所以不需要寻找IP地址,然后输入用户名新建一个用户,由于没有保存历史记录功能,所以每次进入系统前都需要新建一个用户。
10、然后输入用户名和密码,在确认用户和密码。登陆成功,选择在线可以聊天的好友,输入信息然后发送,达到和好友的交流。3.4 协作图强调的是发送和接收消息的对象之间的组织结构。一个协作图显示了一系列的对象和在这些对 象之间的联系以及对象间发送和接收的消息。对象通常是命名或匿名的类的实例,也可以代表其他事 物的实例。用户在登录系统后,进入登陆界面,在界面的好友框里,选择要传送文件的好友,点击传送文件 的按钮,会弹出选择文件的对话框,在对话框里查找你所在的文件系统中你要传送的文件。然后点击传送。4 .详细设计4.1 客户端设计一个网络聊天室的运行,首先是要有一个完整稳定的服务器端,并且拥有很多个服务器端。
11、客服 端要具有实现用户注册和用户登陆, 在登陆成功后,要显示出公聊界面,实现聊天功能并且能够发送 表情和保存聊天内容和显示聊天记录等功能,在新用户上线和用户下线时要更新每个客户端在线用户 列表名,并且可以和在线的用户实现一对一的私聊功能。在服务器端可以实现不断的监听客服的连接,并且根据客户端发送过来的不同信息如注册信息, 登录信息,公聊信息,私聊信息,退出信息等,服务器端要做出不同的响应,并且要实现数据库的操 作,如根据用户注册的信息保存数据库中,根据登录时发送来的用户名和密码检测是否合法用户等。 经为每一个连接着的客户端建立了一个线程, 这个线程好比一根电话线一直等待客户端说话, 而信息 发
12、送中心就相当于一个总台,一旦有人打电话进来,就通过电话线把信息传完成了服务器端的第一个的任务,那么第二个任务也就不难解决了。 上面已送到总台,再由总台根据需要将这个信息发送给 接收群。这样 就意味着,服务器每接受一条信息,就要调用一次信息发送中心的方法,并将这条信 息发送到所有客户端(或者特定的某个/某几个客户端)。电脑每做的一次动作,一个步骤,都是按照以经用计算机语言编好的程序来执行的,程序是计算 机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。 所以人们要控制计算机一定 要通过计算机语言向计算机发出命令。侦听服务器发送的连接请求,有请求就接收发来的信息,并通过短信猫发出去单
13、的说,服务器端是为客户端服务的,服务的内容诸如向客户端提供资源,保存客户端数据等等.客 户端可以是任意的一台电脑,只要它和服务器端存在连接,并且得到了服务器端的授权,就可以使用服 务器端白服务.象现在就可以理解为百度的网站是服务器端 ,我们现在使用的电脑就是客户端.我们可 以使用它的服务.4.2 服务端设计由于客户端需要同时能够接收信息以及发送信息,所以也必须利用多个线程来实现。主线程用于 接收用户输入的内容并将之发送到服务器端, 而一个后台线程将一直接收来自服务器端的信息,并将之返回给客户端的用户。客户端(Client)或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。除了一些 只
14、在本地运行的应用程序之外,一般安装在普通的客户机上,需要与服务端互相配合运行。因特网发 展以后,较常用的用户端包括了如万维网使用的网页浏览器,收寄电子邮件时的电子邮件客户端,以及即时通讯的客户端软件等。对于这一类应用程序,需要网络中有相应的服务器和服务程序来提供相 应的服务,如数据库服务,电子邮件服务等等,这样在客户机和服务器端,需要建立特定的通信连接, 来保证应用程序的正常运行。不过客户端及伺服端的关系不见得一定建立在两台分开的机器上, 同一台机器中也有这种主从关 系的存在。提供服务的伺服端及接受服务的客户端也有可能都在同一台机器上, 例如我们在提供网页 的服务器上执行浏览器浏览本机所提供的
15、网页,这样在同一台机器上就同时扮演伺服端及客户端。4.3 多线程设计为了能实现一对多的通话聊天也就是说间接的多对多的聊天的功能, 所以必须在客户端配置和服 务端配置的时候。实现多线程的功能。实现程序的并发。以及可以减少创建进程是 CPU的资源浪费。 和服务区负荷太重。多线程在客户端可以实现,用户进行群聊,以及接受多个好友的响应信息。在服务端可以减少创建进程的开销。在一个程序中,这些独立运行的程序片断叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。多线程处理一个常见的例子就是用户界面。利用线程,用户可按下一个按钮,然后程序 会立即作出响应,而不是让用户等待程序完成了当前任务以后才开始响应。使用线程可以把占据时间长的程序中的任务放到后台去处理用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度。 程序的运行速度可能加快,在一些等待的任务实现上如用户输入、 文件读写和网络收发数据等,线程就比较有用了。 在这种情况下可以释放一