Java网络聊天室系统的设计与实现
摘要:计算机从出现到现在有了飞速的发展,现阶段的计算机已经不单单是用于进行运算的独立的个体了,跟随计算机一同发展的还有互联网技术,经过了长久的发展,互联网技术有了日新月异的发展,它的发展速度和计算机的发展速度一样的恐怖,从出现一直到现在,它已经在人们的生活的各个方面发挥着自己的作用,而且是不可替代的作用。因为计算机发展到现在已经成为一种廉价的生活物品,可以预想到未来人们都会使用计算机,上网的人也会逐渐增多,会有不断的人完善和更新出更好更棒的互联网服务,来提高自己的生活水平。我国近几年经济和社会在不断的发展,互联网也得到了广大的支持,网络更是已经融入了广大人民的日常生活。在计算机编程方面,互联网软件开发逐步转向以java为首的面向对象的编程技术,传统的面向过程的编程技术已经逐渐退出了历史的舞台,java正以不可思议的速度发展。人们日常的生活,教育,网银,网购,面对面的网上视频,以及现在逐渐被大众接受的网络游戏都在使用面向对象的技术。而且java自身的优势以及特点能够真正减少了企业的开发成本和开发人员的开发时间和难度。
在以前,人们获取信息的方式十分单一,通过电视,广播,信件以及人们的口头相传,这种方式效率十分的底下,得到的信息也很局限。现阶段上网查找成为人们获取信息的主要途径,它具有快速,方便,以及传递的特点。所以人们对网上的即时面对面聊天产生了需要。一个界面清新,简单,并且高效的网络聊天室一定会受到大众的喜爱。为了这个目的,构建此聊天系统。
本文将介绍网络聊天室程序的设计与完成。
关键词:网络聊天室;Java;客户机/服务器;Socket;
Java chat room system design and implementation
Abstract: With the development of Internet technology, network technology is developing very fast in the area of computer technology, one of emerged from it until now, it in many aspects, such as politics, economy, life play an irreplaceable role. With the growing popularity of the computer and popularization, the future will be more and more people use the Internet, enjoy the constantly update and improve the network services, to improve the level of their work lives. With the development of our economy and the popularization of the Internet, the Internet technology is also used more in the daily life of people. In application development and process oriented programming technology is gradually replaced by object-oriented programming technology, the computer software design and development has become the dominant, especially in the development of network technology, the object-oriented Java language programming is development rapidly in explosive. Remote education, online banking, shopping online, video online, and online games are all using object-oriented Java technology. And Java portable features enable Java programs to be compiled into bytecode that is not relevant to the platform, which enables Java programs to run on machines with Java interpreters. It really reduces the development cost of the enterprise and the development time and difficulty of the developer.
In today's society, people's lives have long been inseparable from the Internet. In the future, the life and work of society will depend more on the development of digital technology, more and more networked, digital, electronic and virtualized. E-commerce is also becoming more and more relevant with the development of the Internet and people's life. The use of the development of the Internet and the current situation and development trend, can believe network technology step by step change our work and lifestyle, and social values will all change of step by step.
In today's rapid development of network, the query on the Internet become people to quickly get published, and transfer information important channel, it in many aspects, such as people, political economy, life play an important role. Traditional letter-writing methods do not satisfy people's immediate demand for information. Thus, can chat face to face on the Internet become important human needs, a popular chat tools should be: interface and pure and fresh, simple operation, humanity, saving system resources. For this purpose, build the chat system.
This paper completes the development of an online chat room program through Java's sockets. This article introduces the design and completion of network chat room program.
Key words: chat rooms; the Java; Client / Server;the Socket;
1 引 言
随着社会的发展和互联网技术的发展,普通老百姓也能够拥有属于自己的计算机,在平常的生活中也离不开了网络技术的支持,而替代了电话和写信的网上即时聊天成为了人们十分常见的沟通方式。
本软件是采用sun公司开发提供的java语言制作的,是基于C/S模型的网上聊天室。这个系统分为两个部分,服务端和客户端。服务端的工作主要是来监听和接收来自客户端的请求,然后处理客户端发来的消息,并通知客户端。而客户端的功能是能够让新用户注册,通过用户名密码登陆并且使用该系统。通过服务端和客户端的协同工作最终使用户能够使用网络聊天室,在聊天室中完成用户和用户之间的沟通。
2 网络聊天室简介
当今社会,能够实现即时通讯的软件使用频率是十分恐怖的,网络聊天室作为它的一种,使用人数也是相当可观的。国内处于垄断的QQ,业界老大哥微软的MSN都是大众关注和使用的焦点,普通老百姓也能够拥有属于自己的计算机,在平常的生活中也离不开了网络技术的支持,它是人们的生活变得十分的便利和高效,你能在网上找到自己想要的信息和有共同兴趣爱好的朋友。而且,现在很多的软件还有多人聊天,电子会议等一系列功能。
2.1 网络聊天室现状和发展
网上即时聊天室是广泛使用的一种技术,它的简单方便的沟通方式能够被广大的网上用户所使用。在当今社会,网上聊天是互联网服务重要的一环,有大约43%的用户都会使用网上聊天,是排在第四位。但是有很多人认为网络聊天室就是一种用来娱乐和打发时间的方式,而缺少了实际的价值。就目前来说,能够完成收入的网络聊天室其实并不多。它应该怎么实现自己的商业价值外界并没有过多的关注。
现在,很多企业都会开发属于自己的聊天室,用户通过该网站注册的用户名以及密码登陆到企业的服务器上。在聊天室中,用户之间可以通过输入文字以及各种符号来表达自己的想法,来达到互相之间的沟通。目前,开发一个供用户使用的网络聊天室的技术门槛并不是很高,也不需要大量的资金,国家对于这方面的管制和政策也没有太限制,所以当今社会上聊天室的竞争其实是很激烈的,腾讯,网易,新浪都有属于自己的网络聊天室,但是用户的集中度并不是很好,各家大型网站的网络聊天室都会有自己的忠实用户,彼此之间还没有很明显的差别,各自有各自的优势。
根据某个组织调查公布的中国目前互联网发展报告,目前网络聊天室在商业方面不被看好主要有几点,一:喜爱在网上聊天的人大部分在17~23的年龄之间,他们还没有完全独立,经济上并不是很富裕。二:大部分的网络聊天室的付费内容其实并不多,而且不是强制性的。
很多网站目前将收入目标定位已经参加工作收入较高的白领人士,而对于尚在学校以及初入社会的青少年并没有过多的注意。但是,就目前社会的发展情况来看,青少年的消费能力其实是十分可观的,他们并不想原先社会那样经济十分的拘谨,而是当今的父母都会尽量满足自己子女的需求,无论是经济上还是其他方面。所以,针对性的在网络聊天室加入一些青少年感兴趣的付费内容其实是十分必要的,它能够带来难以想象的收益。现在很多的商家对新型的广告形式并不是很了解,传统广告影响了它们在互联网领域的思考,另一个方面是网络聊天室自身的广告模式不当。就现阶段的情况来看,网络聊天室也要进行转变,不单单是提供即时聊天的服务,而是应该更加多元化,专业化的发展。一方面继续发展自己的优势,将即时聊天做的更加方便,快捷,能够满足不同年龄,不同职业,不同需求的用户。另一方面可以提供用户一些不同于聊天的其他服务,例如近几年十分火的线上课堂,能够让用户足不出户就能学习到不同专业方面的知识,这样的话,收取一部分的费用对于用户来说也是能够接受的。从这几方面来说网络聊天室的商业实力是十分恐怖的。
3网络聊天室的技术以及环境
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程[1]。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点[2]。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等[3]。
java在推出时就是完全开源的,全世界的开发者都能够自定义许多自己的内容,没有什么局限性,就是这样一种特点,java的发展得到了迅速的提升。全球无数的开发人员都在不断完善着这一技术,你可以在各种技术的论坛上看到各种技术大神的分享,其中很大一部分都是十分实用的。现阶段,全球大部分的企业都会选择java作为开发语言,比如金融,银行等。从推出到现在,java已然成为一种十分成熟可靠的产品。
3.2 Java的特点
1. 跨平台性
java在设计的时候就被设计成一种不会受到计算机限制的语言,计算机的硬件以及操作系统等都不会影响到java软件的运行,这是许多软件开发人员和互联网企业追求的发展方向,为什么这么说,因为计算机的快速发展,世界上计算机的种类已经到了难以想象的地步,操作系统也是如此,如果一种语言只是针对某个特定的计算机以及操作系统的话,那么软件的适用性将是很低的,这对于互联网软件这种方便,高效的特点是十分违和的。软件是不能够完全依赖设备的。java自己的虚拟机很好的避免了这一限制,java源代码编译后产生的二进制文件并不是让计算机去运行的,这些二进制的字节码文件是能够被java自带的虚拟机识别出来的,说到底,java虚拟机提供了一个独特的运行环境,才能够让java在不同的环境下运行。这就是java有跨平台的特点。
2. 面向对象
和传统的面向过程不同,java是一种面向对象的语言,所谓的面向对象就是一切的物体在java中都可以被描述成对象,对象会拥有属性和方法。一般来说对象的特点或者性质会被定义为属性,它用来描述对象。而对象的一系列行为会被定义为方法,比如说动物会跑会叫,这些都会被定义为方法,java可以通过操作对象的具体方法让对象完成不同的动作。java充分发挥了这种编程的思想,有很高的代码扩展和复用的特点。
3. 安全性
java中使用的都是完成的对象作为数据结构,这些对象的安全可以通过权限控制以及封装来完成。java的源代码在进行编译的时候都会经过java语言自身的规定的检查,保证了代码中的变量在编译完成后都能产生对应的具体的java类。在运行java的时候也会使用类加载器进行载入,并且还有有字节码的校验,只有通过了这些校验java虚拟机才会正确的运行程序,以上就是java的四种安全保证。在网络上的使用java也提供了权限控制的机制,能够保证网络上访问用户的安全。
4. 多线程
多线程的理念已经在很多地方有了实际的应用,最明显的就是操作系统方面,我们在操作电脑时能够同时打开不同的程序以及进程,这就是多线程的应用,它能够让一个运行程序中同时有多个线程,这种程序中多线程的理念能够处理并发以及多任务的处理。java中有内置的一些多线程技术以及还有很多事先准备好的类用来供用户使用和管理自定义的多线程。
- 简单易用
java的源代码能够使用各种不同的编辑软件来编辑,并不会需要特殊的环境。例如市面上的文本编辑器,记事本以及专业的IDE都能够用来编辑java源代码,只需要把编辑好的源代码编译一下,在使用jvm这种java的虚拟机运行就可以了。通过各种测试以及修改,就可以得到用户想要的程序了。
3.3 TCP/IP协议的知识
TCP/IP说白了就是网络中的一种协议,协议是组成互联网的基础,它是由TCP(传输层)协议和IP(网络层)协议共同组成的。这个协议规定了电子器件如何接入互联网,以及它们之间数据的传输应该使用什么样的方式的一种标准。在协议中,上一层协议会调用对应的下一层协议来完成需求。换句话说,如果数据传输有问题,要通知机器重新传输的就是TCP协议负责的事情,直到要传输的数据能够成功的到达指定的机器上。而给互联网中每一个设备分配一个特殊的标识的就是IP协议的作用了。
3.4 Socket的介绍
java中被称为“套接字”就是socket通信技术[1],它能够描述一个计算机IP的地址以及端口。socket能够通过java程序向互联网发出请求和处理网络发过来的请求。在建立双方网络连接的时候会使用到socket套接字。当网络成功建立连接后双方都会有一个socket的实例被建立,通过使用和操作这个实例,就能够完成各种需求,对双方的连接来说,客户端和服务端并没有什么差别socket是平等的,它们都是通过socket的实现类和它的子类来完成的。
Java socket通信开发原理:socket分为服务端和客户端两部分,服务端主要是可以监听一个特殊的端口,它能够监听并且捕获的向这个特定的端口发出的请求,这个请求就是由客户端来发起的。当连接建立之后会产生会话,完成会话之后关闭连接。而客户端主要是发起请求,它能够向某一个特定的服务器上的一个特殊的端口发起请求,然后建立连接处理会话,会话完成后和服务端一样关闭socket。客户端并不用像服务器一样规定一个特殊的打开的端口,系统会自动分配一个能够使用的端口。
3.5 开发工具
我使用的是Eclipse作为开发工具,Eclipse开发平台是开源的可以基于java进行扩展的。就它本身来说,只是集合了各种服务和框架,用户可以添加各种各样的插件和组件来不断扩展。Eclipse不但是一个免费的软件,而且它还支持各种的java标准,这些特点能够极大的缩短开发的周期也让它成为了广大程序员最常用的开发工具之一。
Eclipse支持用户自定义工程,能够创建编辑文件,还能够完成编译,运行等一系列java的工作。使用Eclipse开发能够实现高效并且快速。主要特点如下:开放的,扩展性很好的IDE、强大的插件功能、成功的图形界面。
4 网络聊天室系统的设计
4.1 项目概述
我自己的这个聊天室目前来说还是十分的简单,和市面上那些已经成熟的网络聊天室相比还是差别很大的,但是基本的聊天功能也是能够使用的,整个界面简洁,使用起来也十分方便。
4.2 网络聊天室系统的设计
5 系统详细设计
5.1 服务器模块设计
服务端的功能主要如下:
一:能够开启和关闭服务器。
二:等待着客户端从特殊端口发送的请求。
三:监听的端口并不是固定的,服务端的端口是能够自定义的。
四:能够广播消息向所有连接到服务器的用户。
客户端和服务器之间通过socket套接字进行连接,socket的使用在java当中并不复杂,十分的简单。API提供了一个专门的类来处理,让编写程序变得十分简单。多线程的技术在服务器端得到了充分的体现,服务器能够同时处理来自不同IP的客户端的请求。通过循环调用serversocket对象的方法来监听是否有来自客户端的请求。
5.2 客户端模块设计
客户端的功能主要如下:
一:能够和服务端进行连接。
二:新的用户能够注册账号。
三:通过用户名以及密码完成用户的登陆,连接到聊天室。
四:用户能够在聊天室发送消息。
客户端通过socket与服务器建立连接。通过java对象的流来进行信息的传递,服务器接受请求返回对象,然后返回给客户端信息。不同的客户端的信息在服务端能够进行不同的处理。
6 系统测试
6.1 单元测试
一般来说,在软件的开发中,每当一个基本功能能够实现之后会由程序员先进行测试。一般来说要根据实际的情况来看这个功能是否完整,要验证接口的设计是否和设计书上面的一直。这就是基本的单元测试。单元测试并不是光测试接口的功能就可以了,程序员应该对测试结果进行预计的评估,看实际的结果和预计的结果是否相同,还有对可能发生的所有错误进行测试和处理。单元测试总的来说就是要测试最小的功能模块,与程序其他部分隔离的情况下进行测试,保证最低级的功能没有问题。
6.2 系统测试
系统测试就是对软件的全面的测试,主要是为了测试各个模块之间的数据的通行以及整个软件的运行是否达到了用户的要求。而且要求具体的测试报告来评判软件的好坏。系统测试不应该仅仅测试软件,而是要软硬件结合一起进行测试,需要专业的测试人员根据实际的用户需求制定有效的测试计划才行。而且系统测试不应该在软件项目的最后进行,应当在软件开发过程中周期性的进行。
7 总结
这个项目实现了基本的即时聊天的功能,经过很久的测试以及各种各样的纠错解决了很大部分的问题。但是,世界上没有一个程序是十全十美的,每一个计算机的软件都会有各种各样的不足,特别是我们这种没有经过长时间的维护和测试的个人设计的软件。就算是当今使用频率范围都非常大的window系统也会经常爆出各种的漏洞以及错误。这个系统对于我这个初步接触软件设计以及编程的学生来说,在初期是十分困难的,感觉逻辑方面很是复杂,难以控制,所以直到现在还是有许多的缺点和想实现但是现在还没有实现的一些功能,有时间的时候我还是会逐步的完善他们,希望能做成一个能够实际使用的聊天系统。
通过这次毕业设计获得的宝贵经验,通过这次的软件的开发,我对C/S模型有了一个从一知半解到现在稍微入门的进步,我相信这个模型我现在认识的仍热不够,在以后的工作和学习中要努力完善自己在各个软件领域的知识。还有通过我在企业的实习以及毕业设计的开发,我对于多线程的使用得到了极大的提升,以及在如何进行网络编程方面有了很好的了解。
通过实际的设计一个程序,以及我在公司里做后台的开发,我了解了做好一个软件的困难。虽然在大学的时候做过一些课程设计,但是那些相比这个来说还是十分简单的,而且会有老师的指导和帮助。所以在制作的初期还是十分的棘手,通过各种各样的测试以及修改,还是完成了这个设计我还想说一些我在公司实习的一些感想,我目前是在一所创业公司担任程序员。和一些大的公司相比,创业公司的产品变化十分的频繁,而且我们公司崇尚的是敏捷开发,迅速的迭代。我经常今天写的程序到了明天就会因为需求以及效果的问题作出改变,这对于我们这种编程人员是十分疲劳的。特别是我现在在一个新的部门独自承担后台的开发工作,在原来的部门会有一个师傅带了我,我感觉还是能应付的过来的。但是,现在只有我一个人,而且我还要做关于服务器运维方面的工作,我感觉到自己在
某些方面还是欠缺的很多,比如原来的重心都集中在编程方面,现在接手了运维的工作后才发现运维并不是我想象中的那么轻松,各种服务器的问题以及配置是十分麻烦的。这给我敲响了一个警钟,自己应该学习各种不同的知识来应对以后可能发生的各种问题。