- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Java的网络聊天系统的设计与实现.doc
基于Java的网络聊天系统的设计与实现 摘 要:介绍了一款用于聊天沟通的软件,包括发送和接收私人消息和群消息的功能,该软件采用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.
文档评论(0)