视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
基于Java的网络聊天系统的设计与实现
2025-10-03 15:09:39 责编:小OO
文档
基于Java的网络聊天系统的设计与实现

作者:陈盼 黄辰

来源:《物联网技术》2016年第01期

        摘 要:介绍了一款用于聊天沟通的软件,包括发送和接收私人消息和群消息的功能,该软件采用MyEclipse为开发环境,使用Java编程语言完成逻辑开发。软件运用Socket来进行线程之间的通信,并运用InputStream和OutputStream流来实现读取或发送相关信息,聊天界面用Swing绘制,使用MySQL数据库存储注册用户的基本信息。系统采用B/S架构,由界面程序、服务器端程序和数据库存储组成。

        关键词:Java;Socket;MySQL;InputStream;OutputStream;聊天

        中图分类号:TP393 文献标识码:A 文章编号:2095-1302(2016)01-00-02

        0 引 言

        现如今互联网越来越发达,网络聊天工具已成为人们日常交流的一种不可缺少的工具,除去它成本低,通信速度快的优点,还具有方便信息交流和资料传递的益处,所以本文旨在开发一个界面友好、易于操作的聊天工具,能较好地解决电话的单线程通信以及费用高昂等问题。

        1 系统功能概述

        1.1 系统流程

        本系统的运作流程如下所述:用户在注册界面输入用户名、密码、性别、年龄等基本信息注册,在登录界面输入用户名和密码后登录,登录之后便有自己的好友列表,点击好友会弹出相应的对话框进行对话。管理员主要负责对系统的维护和用户的管理。

        1.2 系统功能

        用户先发送消息到服务器,服务器根据协议里的字符区分是群消息还是私人消息,即从主动客户端的OutputStream流中读取发送的消息,并从中读取真正有用的信息发送给相应的客户端,至于发送给哪个客户端,在主动发送消息的客户端会有带有相对应客户端的名字,接收消息的客户端会有一个线程监听的InputStream流,该系统的工作原理如图1所示。

        2 系统核心技术概述

        2.1 Socket通信技术

        Socket的工作流程分为如下三步:

        (1)建立连接。由于本系统使用TCP/IP通信,在通信之前,服务端和客户端之间必须建立安全可靠的点对点连接。

        (2)数据通信。本系统使用InputStream和OutputStream进行数据的读取和发送,经过服务器的消息处理,转发到相应的客户端。

        (3)通信完毕。关闭连接。

        图1 系统工作原理图

        Socket工作原理如图2所示。

        图2 Socket工作原理图

        2.2 TCP/IP协议的特点

        本系统基于TCP/IP协议,主要有如下特点:

        (1)TCP/IP协议是一个开放型的协议标准,不限硬件和操作系统,对所有人都是免费的;

        (2)TCP/IP协议是一个标准的高层协议,为用户提供安全可靠的点对点网络服务;

        (3)TCP/IP使用统一的网络地址分配方案,每台可以分配到IP的机器都有自己唯一的IP地址;

        (4)TCP/IP协议可以在广域网、局域网及其他网络间使用,对网络硬件没有要求。

        2.3 多线程

        线程是指程序在执行过程中,能够执行程序代码的一个执行单元,在Java语言中,线程有四个状态:运行,就绪,阻塞和结束,而使用多线程可以减少程序的响应时间,如果某个操作耗时或者陷入长时间的等待,此时程序不响应鼠标或者键盘的操作,使用多线程后可以把这个耗时的线程分配到一个单独的线程去执行,这样就使程序具备了更好的交互性;多线程也能简化程序的结构,使程序便于理解和维护。

        系统中会出现多个客户端同时访问服务器的场景,故必须将服务器的某些变量做同步处理,在Java程序中,JVM负责线程调度,即根据特定的制度为多个线程分配CPU使用权,在本系统中多线程阻塞问题主要出现在当多个客户端访问服务器时,要并发的修改服务器的相关变量,所以可能会出现对象被不连贯修改的问题,故此,必须对服务器的变量做同步处理。

        3 数据库设计

        本系统的数据表主要用于保存用户在注册时填写的基本信息,包括用户名、密码、性别、年龄等,在注册成功后,用户可以修改上传自己的图像,故数据库中user表的E-R模型图如图3所示。

        图3 数据表E-R模型图

        图3中,为了维护系统安全,对密码的存储并不是明文存储,而是在存入数据库前,在程序里对密码进行不可逆的加密,只是把加密后的结果存在数据库中,需要验证用户密码时,也将用户输入的密码作加密处理,然后和数据库比对,结果一致则登录成功。

        4 结 语

        本系统设计了一个功能相对完善的网络聊天系统,用户注册登录后,相互之间接收发送消息,运用了Socket通信、IO流以及TCP/IP通信的相关知识,能够实时动态的完成信息传递,具有高度的交互性,能够有效的满足客户的请求,易于维护和更新。

        参考文献

        [1]李刚.疯狂Java讲义[M].北京:电子工业出版社,2010.

        [2]张晓龙,刘钊,边晓勇.JAVA程序设计基础[M].北京:清华大学出版社,2007.

        [3] Chad Darby.Java网络编程指南[M].北京: 电子工业出版社,2002.

        [4] 罗军舟.TCP/IP协议及网络编程技术[M].清华大学出版社,2004.

        [5]李兴华.Java WEB开发实战经典[M].北京:清华大学出版社,2010.

        [6] 张虹.软件工程与软件开发工具[M].北京:清华大学出版社,2004.

        [7]林涛.计算机网络应用编程技术[M].北京:人民邮电出版社,2006.

        [8] 梁普选.Java程序设计与网络编程[M].北京:清华大学出版社,2007.

        [9] 朱庆生,李芝兴,杨瑞龙.Java程序设计之网络编程[M].北京:清华大学出版社,2009.

下载本文

显示全文
专题