当前位置:首页 > 免费毕业设计

基于JAVA的网络通讯系统设计与实现论文+系统

基于JAVA的网络通讯系统设计与实现论文+系统

  • 网站价格: 2
  • 特殊技术: java
  • 作品类型: 免费毕设
  • 售后服务:

联系方式: 微信:biyebang QQ: 629001810

作品详情

基于JAVA的网络通讯系统设计与实现LW+系统

目录

 

 


系统设计

1.1课题选择的背景

信息时代的到来引发了一场知识和信息革命,计算机和现代网络技术的广泛应用极大地促进了社会经济的发展,同时也带来了一些新兴产业的发展,比如聊天软件。随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流方式已经难以满足人们的交流的需求了,网络聊天已经慢慢成为人们生活的一部分,呈现出良好的势头和广阔的发展前景。在互联网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。同时,即时通信系统对现代企业也有着重大意义,它能实现快速人际交流、数据共享,从而提高效率和生产力。实时通信为诸多企业开拓了网络应用的新领域。自从它诞生以来,以实时交互、资费低廉等优点,受到广大个人用户的喜爱,已经成为网络生活中不可或缺的一部分。越来越多的企业已开始认识到即时通信工具能够带来极高的生产力,并借助它的应用,来提高业务协同性及反馈的敏感度和快捷度。网上聊天系统是为人们之间进行交流和联系提供的一个平台。通过提供完善的网上聊天系统服务,可以达到增进彼此之间的了解,增进人与人之间的感情交流。因此,两台计算机之间进行即时通讯、发送文件等交流方式已经成为必然潮流。于是出现了QQUC 等聊天工具,然而QQUC 等聊天工具虽然方便、实用,但是,娱乐功能太多,有很多吸引人的娱乐功能,从一定程度上来说,是一种娱乐工具,不能作为用于即时通讯的专用工具。目前,用于实现单一的即时通讯的软件实在太少,为此,我们决定开发一个专用于实现多台计算机之间即时通讯的软件,以方便多台计算机之间信息的快速交流。

1.2 课题选择意义

计算机越来越成为我们生活中的重要工具,自从1968年世界上第一个计算机网络--ARPA网(美国国防部高级研究计划网)投入运行以来,计算机网络技术在全世界范围内迅速发展,犹如雨后春笋,各种网络纷纷涌现。不同国家的计算机网络相互连接,形成跨国计算机网络,促进了世界各国之间的科技、文化和经济交流。在电子商务的应用中,计算机网络作为基础设施,将分散在各地的计算机系统连接起来,使得计算机之间的通讯在商务活动中发挥了重要的作用,从此计算机的作用不再那么单调,现在Internet把几乎全球的服务器相互连接起来,这样不仅使网络上的计算机之间进行相互访问并下载对自己有用的资源,还可以用来写信、听音乐、看电视、通过可视电话进行通信,通过Internet网进行信息查询、网上购物等。计算机正在改变我们的通信、工作和娱乐的方式。

2.1 系统需求

随着网络的迅速发展,通过即时通讯工具进行相互交流,沟通会对用户带来很多的方便,像现在很流行的QQ、MSN、UC等,它们为用户们之间的沟通带来很多的方便的,但是这些即时工具在企业或者学校禁止用户访问外网的时候,这些即时的通信工具就不能使用了,用户之间就不能很方便的沟通交流了,可以通过自己设计一个即时通讯工具,自己建立服务器,放在内部网络,在用户不能访问外部网络的时候,可以很方便用户之间进行沟通交流。

2.1.1系统的特点分析

基于JAVA的网络聊天系统基于C/S 模式实现,采用Java 语言编写。所有用户都通过服务器端中转消息,这也是现有大多数聊天系统所采用的模式。本系统真正地实现了多点聊天的功能,可以在多点间快速传递信息。同时,它体积小,功能单一,界面简洁美观,容易上手,只要简单阅读服务器端和客户端的帮助文档即可完全掌握它的使用方法,同时该系统是网络聊天,特别是局域网聊天不可多得的好帮手。

2.1.2网络聊天系统需要解决的问题

首先,网络聊天系统是一个比较复杂的系统,良好的架构设计非常的重要:C/S 模式是较为成熟的软件运行模式,基于局域网设计,运行速度快,安全性高,为当今主要的软件所采用的模式。不好的架构会在系统实现或者维护阶段系统的扩展带来很多麻烦。
其次,服务器的承载能力,如何处理多个用户的同时登录和请求,好的设计会使系统在很多并发用户登录的时候不至于系统崩溃。

最后,服务器和客户端的通信协议制定比较困难,如何制定一套简单,并且易于客户端和服务器之间理解的通信规则非常重要,否则会在服务器和客户端通信设计的时候带来很多的问题。

2.2 系统设计思想

本系统的设计思路如下:

(1) 系统采用模块化设计,针对不同的应用设计不同的模块,并对这些模块都进行集中式管理,作为应用程序有较强的可操作性和扩展性。

(2) 合理的数据流设计,在应用系统设计中,相对独立的模块间以数据流相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性,尽量保证低耦合,高内聚。

(3) 采用封装的思想,根据模块的不同情况进行类的封装,并重用各个模块,并合理利用各种设计模式,为以后维护带来方便。

2.3 系统实现功能分析

本次设计主要实现了以下几个功能:

●  客户端功能设计如下:

(1)身份认证,该模块主要实现用户的登陆认证,以及服务器代理IP和端口的设置,并检查数据的合法性。

(2)聊天功能,该模块主要用Socket实现不同用户之间消息的的发送,并且不仅仅传文本格式的数据,也可以传输图片,需要自己封装并自定义消息流,并能够识别显示。

(3)文件传输,该模块主要实现不同用户之间进行文件的传输。

●  服务器端功能设计如下:

(1)在线用户统计,该模块主要实现在线用户的查看显示,并可以控制其在线状态,强迫特定用户下线。

(2)日志记录,该模块主要记录客户端用户上线、下线情况,并存储下来。

(3)发布信息,该模块主要服务器可以发布系统信息,使客户端可以接收。

2.4 系统开发及运行环境

(1) 系统开发平台:本系统采用eclipse 及WINDOWSXP设计。

(2) 硬件环境:

运行本系统的硬件基本要求如下:

CPU:Intel P3及以上;

内存:256MB及以上;

硬盘:40GB及以上。              

(3) 数据库管理系统软件:SQL Server 2000。

 

第3章 系统总体设计

 

3.1 总体构架

基于Java的网络聊天系统设计与实现主要考虑三个个方面的设计,即服务器模块设计,服务器客与客户端通信规则设计和客户端模块设计,本系统整体构架如图3.1所示。

 

 


系统实现

 服务器功能模块的设计

5.1.1 SocketServerSocket介绍

Socket,简称套接字,用于实现网络上客户和服务器之间的连接。也就是说网络上两个或两个以上双工方式通信的进程之间总有一个连接,这个连接的端点成为套接字,套接字是在比较低的层次上通信的。

具体的说:一个服务器应用程序一般侦听一个特定的端口等待客户端的连接请求,当一个连接请求到达时,客户端和服武器端建立一个通信连接,在连接过程中,客户端被分配一个本地端口与一个socket建立连接,客户端通过写socket来通知服务器,以读socket中的信息,类似的服务器也获得一个本地端口,它需要一个新的端口号来侦听原始端口上的其他连接请求。服务器也通过它的本地端口连接一个socket,通过读写和客户端通信。

Socket程序的工作过程:

1、建立Socket连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接通道。

2、数据通信:利用虚拟连接通道传送数据信息进行通道。

3、关闭:通信结束时,再将所建的虚拟连接拆除。

实现套接字的服务端,需要使用ServerSocket 类。ServerSocket类是服务器程序的运行基础,它允许程序绑定一个端口号来监听客户端的请求,一旦产生客户端请求,它将接受这一请求,同时产生一个完整的Socket 连接对象。服务器绑定的端口必须公开,以便让客户端程序知道如何连接这个服务器。同时,作为服务器,它必须能够接收多个客户的请求,这就需要为服务器设置一个请求队列,如果服务器不能马上响应客户端的请求,要将这个请求放进请求队列中,等服务器将当前的请求处理完,会自动到请求队列中按照先后顺序取出请求进行处理。服务器的资源是有限的,这就导致它的最大连接数是有限的,通过ServerSocket 的构造函数可以指定这个最大连接数。如果不明

确指定这个连接数,默认最大连接数为50,也就是说,客户端的请求队列最大可以容纳50 个请求,当超过这个最大连接数时,用户的请求将不再会被响应。利用SocketServer也提供了一些方法,它们主要有:

accept()             返回一个“已连接”的Socket 对象

getInetAddress()     得到该服务器的IP 地址

getLocalPort()       得到服务器所侦听的端口号

setSoTimeout()      设置服务器超时时间

getSoTimeout()      得到服务器超时时间

服务器和客户端通过Socket简单通信框架下图所示。

 

 

 

图  5.1  服务器和客户端通过Socket简单通信框架

 

5.2 服务器功能模块的实现

5.2.1多线程服务器模块实现

服务器模块核心功能是使用Socket Server实现多线程的服务器,针对每一个客户建立一个单独的线程处理客户端的请求。其具体思路是,首先建立Socket Server,并绑定服务器IP和某个未使用的端口。然后监听该端口,如果有客户端的Socket连接则建立一个客户端线程ClientThread类对象,有该对象处理该客户的一些请求,并在ClientThread中保存User Bean对象,该对象保存了用户的一些基本信息,比如账号、密码、年龄、是否在线等。如果服务器没有关闭Socket Server则服务器则一直处理客户端连接。其核心代码如下。

public class MessageServer extends Thread {     //服务器端SocketServer  private ServerSocket server;  private boolean isStop = false;  public MessageServer(int port) throws IOException {    server = new ServerSocket(port);  }  /**   * 消息服务   */  public void run() {    Socket client;    try {      while (!isStop) {                 //建立处理客户端连接的线程        client = server.accept();        (new ClientThread(client)).start();      }    } catch (IOException e) {       e.printStackTrace();    } finally {      if (server != null) {        try {          server.close();        } catch (IOException e1) {          // e1.printStackTrace();        }      }      isStop = true;    }  }}

 


 源文件

帮我毕业网微信

版权所有© 帮我毕业网 并保留所有权利

QQ 1370405256 微信 biyebang

QQ:629001810微信:biyebang

收缩