天津科技大学2011届本科生毕业设计
用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。
Client/Server或客户/服务器模式:Client和Server常常分别处在相距很远的两台计算机上,Client程序的任务是将用户的要求提交给Server程序,再将Server程序返回的结果以特定的形式显示给用户;Server程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。 一、C/S工作模式
C/S 结构的基本原则是将计算机应用任务分解成多个子任务,由多台计算机分工完成,即采用“功能分布”原则。客户端完成数据处理,数据表示以及用户接口功能;服务器端完成DBMS的核心功能。这种客户请求服务、服务器提供服务的处理方式是一种新型的计算机应用模式。 二、C/S结构的优点
C/S结构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。缺点主要有以下几个: 只适用于局域网。而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。
客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。
8
天津科技大学2011届本科生毕业设计
第三章 系统分析与设计方案
第一节 开发环境及工具
本系统所用的工具:
服务器端:(Windows平台)首先应有Java环境jdk,建议采用jdk1.4.2;Eclipse。 客户端: Java环境jdk,建议jdk1.42;Eclipse。 本系统运行所需用到的环境为: 硬件配置 :
中央处理器(CPU) :P4 2.0G以上的处理器; 硬 盘:40GB以上硬盘; 内 存:256以上的DDR内存; 显 卡:128M以上显存显卡
软件配置:WINDOWS XP 版本、All-In-One-Eclipse-311、j2sdk-1.42等。
第二节 聊天系统的总体设计要点
一、实现思想
在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。
服务器端工作流程:
服务器端通过系统调用创建一个ServerSocket与指定的本地端口绑定,就可以在端口进行侦听。如果有客户端连接请求,则创建一个Socket,将客户端地址赋给这个Socket。然后登录成功的客户就可以在服务器上聊天了。
客户端工作流程:
客户端程序相对简单,只需要建立一个Socket与服务器端连接,成功后通过这个Socket来发送和接收数据就可以了。 二、系统功能流图:
9
天津科技大学2011届本科生毕业设计
启动AppServer.java 启动ChatClient.java 登录 是否注册 服务器serversocket 是 否 注册 监听 客户端socket 建立与客户端连接的套接字 1.读客户端信息 2.向客户端转发信息 1.读服务端信息 2.向服务器写信息 关闭服务器 关闭客户端
图3-1 系统功能流图
功能流说明如下:
1.启动服务器程序,服务器端创建一个ServerSocket对象,指定端口号。 2.ServerSocket对象等候客户端的连接请求。
3.启动客户端程序,登录用户。如果未注册,先注册再登录。登录成功进入聊天室用户界面。
4.客户端创建一个Socket对象,指定主机地址和端口号,向服务器发送连接请求。
5.服务器端收到客户端请求,建立一条TCP连接,再创建一个Socket对象与客户端的Socket对象进行通信。
6.服务器端和客户端分别建立字节输入/输出流,进行数据传输准备。 7.服务器端和客户端通过各自的字节输入流获得对方发送过来的数据,通过字节输出向对方发送数据。
8.一方决定结束通信,向对方发送结束信息,另一方收到结束信息后,双方分别关闭各自的TCP连接。
9.对象停止等候客户端连接请求。 三、多用户实时工作原理图
10
天津科技大学2011届本科生毕业设计
图3-2 多用户实时工作原理图
注:服务器的run()方法中采用了while(true)结构,不断监听客户端的请求,如收到请求,建立与当前请求的客户端连接的套接字,从而与客户端建立联系。
第三节 系统的功能模块划分及设计原理
当用户聊天时,将当前用户名、聊天对象、聊天内容和是否私聊进行封装并且序列化,然后与服务器建立Socket连接,再用对象输出流包装Socket的输出流将聊天信息对象发送给服务器端。当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象,并将本次用户的聊天信息对象添加到聊天对象集Message中,以供所有聊天用户访问。接收用户的聊天信息是由多线程技术实现的,因为客户端必须时时关注更新服务器上是否有最新消息,在本程序中设定的是1秒刷新服务器一次,如果间隔时间太短将会增加客户端与服务器端的通信负担,而间隔时间长就会让人感觉没有时效性,所以经过权衡后认为1秒最佳,因为每个用户都不可能在1秒内连续发送信息。当每次用户接收到聊天信息后将会开始分析聊天信息然后将适合自己的信息人性化显示在聊天信息界面上。 一、服务器程序模块(AppServer.Java)
服务器与客户间通过套接口Socket(TCP)连接。在Java中使用套接口相当简单,Java API为处理套接口的通信提供了一个类Java.net.Socket,使得编写网络应用程序相对容易。服务器采用多线程以满足多用户的请求,并通过创建一个ServerSocket对象来监听来自客户的连接请求,默认端口为8000,然后无限循环调用accept()方法接受客户程序的连接。
11
相关推荐: