作者:陈盼 黄辰
来源:《物联网技术》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.