基于Java的局域网聊天系统.docx
《基于Java的局域网聊天系统.docx》由会员分享,可在线阅读,更多相关《基于Java的局域网聊天系统.docx(17页珍藏版)》请在冰豆网上搜索。
基于Java的局域网聊天系统
基于Java的局域网聊天系统
引论
在二十世纪,交流的重要性越发显著。
交流的类型也很多,有语言交流、书面文字交流、肢体动作直接交流,有必须借助于一些现代的远程通讯设备交流,诸如移动电话、固定电话、网络等。
而本篇论文研究的则是网络即时通讯系统。
计算机网络技术发展到今天,已经非常的发达非常的普及了,网络带给人们的通讯交流方式也更加受到各个层次人们的青睐。
功能齐全的网络通讯交流设备不仅可以实现文本传输而且可以使人们进行音频视频的直观交流。
就现在来看,QQ是目前国内最火爆的网络通讯设备。
QQ最大的特点就是方便即时,只要记得对方的QQ号码,添加他为好友,就可以随时随地实现聊天、沟通、视频远程操作协助语音通话等功能,是比较现代化的通讯技术之一。
在现代信息科学技术社会,通讯系统推陈出新,功能强大。
该论文现在要探讨的是目标定位到公司内部网络,以方便解决公司内部的交流联系等问题的即时通讯系统,可以大大提高企业公司的工作效率。
该通讯设备方便人们进行沟通交流,例如文字传送,语音聊天,视频通话等等。
该即时通讯系统由客户端程序与服务器端程序两部分组成,支持局域网和以太网。
而这样企业员工就可以在任何有网络覆盖的地方进行随时进行意见的交流和文件的传送等。
使人们不用浪费时间,花费金钱在固定的地点交流。
如QQ类的通讯服务,大概会造成员工的工作态度不够积极,效率不高等缺点,这是因为它们具有聊天对象、聊天内容不受公司内部控制的特点。
由于该即时通讯系统用于企业内部,因此服务器端也安装在企业内部,并且只有系统管理员才能进行人员名称数目的创建,这样就助于进一步的完善公共通讯系统服务的不足之处。
即时通讯具有良好的互动性,互动性可体现在大家在互换不同的问题意见一致觉得听取对方的建议是效果更好。
通过使用及时通讯系统,人们可以在网络覆盖的地方和有电脑的情况下不借助其他外在设备,在线工作交流。
即时通讯是一个以终端用户为中心的网络通讯工具的服务,允许双方或多方传递信息。
绝大多数即时通讯服务有显示好友昵称,好友是否在线,能不能和好友进行交流等功能。
在刚被研发的即时通讯程序中,使用者输入的每一个字母和符号都可以立刻显示在对方的银幕,而且字母的删改也会立刻显示。
这样,双方就如同在进行电话交谈,实时特性得到了充分体现。
70年代初,即时通讯系统(PLATO系统)的早期,还只是柏拉图式的形式。
80年代,Unix/Linux即时消息对话普遍应用于学术届。
九十年代,跨操作系统平台交流的即时通讯出现。
1996年十一月,能够使用户免费下载使用的,即时通讯软件ICQ出现。
ICQ被人们普遍认为是流行的即时通讯软件的先驱。
它是由几个年轻的个以色人列制作,在没有投资的情况下,他们提供这款软件在互联网向全球的用户免费提供下载和使用。
据美国在线报道在1999年底表示,ICQ的用户已经达到5000万,其中超过2/3居住在美国境外的全球用户。
1开发语言与协议
1.1Java语言
回顾Java的发展的长河,能够追寻至一九九零年。
在最初,杰姆斯高斯林把C++语言编写嵌入式软件,能够放进面包机等小型电子消费里。
但后来发现,C++是不适合于这种类型的设计;C++总是引起系统故障导致程序员编程时巨大压力,极有可能会产生大量漏洞。
这样,错误的程序就足够因为面包机的损坏[1]。
对于上述问题,Gosling认为需要开发一种名为Oak的新语言来解决改善这些问题。
Oak是一种可以在各种芯片上执行与平台无关的可移置的语言,大大减少了设备的研究与开发费用。
网络是Java语言获得巨大成效的领域之一,Java与其他语言明显区别就是有时Java只需要一条语句。
Internet主要协议有TCP/IP(传输控制协议/网间协议)。
大多数基于互联网的应用程序被认为是TCP/IP协议的上一层。
如:
FTP、HTTP、POP3、TELNET等。
[2]。
1.2TCP/IP协议
TCP协议是网络通讯的基础[3]。
为了更好了解TCP协议流程,我们首先需要弄明白两个重要的概念:
(1)客户端,通常是服务的请求者,需要最初发送tcp请求。
(2)服务器,是服务的执行者,在接收到客户端的tcp请求后,服务器会提供服务,返回服务执行的结果。
TCP协议与三次握手:
客户端要先发送1个“SYN”包,服务器端与客服端的通信才能够完成。
若SYN标记被服务器收到,它将发回一个“SYN+ACK”的数据包。
然后,若客户端接到了这信息,就应该象服务器发送一个最终确认信息(ACK包)。
TCP连接创立时“三次握手”,是第一SYN,再SYN+ACK,第三ACK三部曲,这样,该通信信道便建立好了,这个连接的活动状态将一直被保持,若其中一方发送FIN(结束)信号或超时时,该连接结束。
如图1-1所示:
图1-1Tcp的连接建立
2需求分析
根据当前局域网的一些特点和情况,对当前的局域网聊天系统进行资料的调研和收集,具体确定局域网聊天系统有下列要求:
2.1即时聊天消息的一般需求
2.1.1一般即时消息格式需求
(1)即时收件箱标识和发送者必须定义;
(2)所有实体必须至少使用一种消息格式;
(3)一个让接收者能回信息的地址必须被包含;
2.1.2即时消息的协议需求
协议是以完成一项任务为其设计目的的一系列的步骤。
协议必须由双方或双方以上参加,信息必须交换,如状态信息,控制信息,其中一方单独完成的就不能算是协议。
[5]。
2.1.3即时消息的安全需求
如果1发送即时消息2和3:
(1)若不能发送,1必须收到确认;
(2)若3被投递了,2只可以接受3一次;
(3)协议必须为2提供检查1是否发送了信息的方法;
(4)协议必须同意2可以用另一条即使信息回复消息;
(5)协议必须向1提供方法确保无别的个体3能够篡改3。
2.1.4即时信息的鉴别和加密
(1)协议必须确保通知和即时消息的置信度,没被破坏、监听、重回放、排序;
(2)协议必须确保通知和即时消息是正确的实体阅读;
(3)协议必须允许客户使用他们自己的方法来确保消息不会被拦截,解密播放。
2.2即时通讯的系统需求
(1)拥有登陆界面,好友列表,聊天界面;
(2)用户登陆,将账号和密码发送给服务器端,如果用户合法则返回“登陆成功”,如果不合法,则返回“登陆失败”;
3系统设计
此刻将对叫chat的即时通讯系统进行总体设计。
采用客户机/服务器(c/s)模式来设计,这是二层c/s结构:
应用程序服务器→应用程序客户端,该结构的分层如图3-1[6]:
图3-1层C/S结构示意图
客户层是应用程序用户接口部分,还被称为应用层,我们通常称之为客户端。
客户层使用图形用户接口是为了让用户可以直接操作。
如果通讯用户和以前不一样,另外2层不会有影响。
服务层又称为功能层。
[7]
3.1系统实现原理
相对于普通网站设计,聊天系统设计和它大不相同,一个普通网站的设计关键有动画,布局等,而聊天室只需满足游客可以随时随地经行交流。
于是,在聊天系统设计的过程中,就要想好下面几个设计上的重点:
在TCP/IP环境下,实现了客户端,服务器端两个程序。
系统原理如图3-1-1所示:
图3-1-1系统实现原理
3.2系统功能模块划分
如图3-2所示:
图3-2系统功能模块
3.2.1服务器端
服务器端结构如图3-3所示:
图3-3服务器端结构图
MyServerFrame为服务器端程序界面。
MyServer为服务器端启动界面。
SerConClientThead是连接服务器和客户端的桥梁。
这是Socket编程的一个重要部分。
3.2.2客户端
客户端结果如图3-4所示:
图3-4客户端结构图
ClientConServer为客户端连接服务器的后台。
ClientLOGIN为客户端程序登陆界面。
FRIENDLIST为用户好友列表界面。
QqChat为用户窗体聊天界面。
CLIENTCONSERVERTHREAD是客户端连接服务器的后台。
3.2.3客户端登陆流程
用户登录流程如图3-5所示:
图3-5用户登陆流程
当用户登录时,客户端由ClientLogin界面收集并验证用户登录信息后,封装成Message对象类然后通过建立在Socket的连接之上的对象输出流将用户登录信息发送给服务器,服务器端将请求转发给SerConClientThread处理,SerConClientThread在收到信息后将验证数据核对用户信息是否合法,如果信息不合法则拒绝登陆,如果信息合法则成功登陆。
若登录成功后,可以把该用户添加到在线好友列表,客户端将会收到登陆结果的返回数据,同时也将用户的好友列表内的在线好友也返回给客户端。
如果登录成功,则进入好友列表界面,你可以去发送聊天信息界面。
3.2.4用户聊天流程图
用户聊天具体流程结构如图3-6所示:
图3-6人们交流具体流程
当使用者登陆后开始聊天时,客户端由QqChat界面收集聊天信息,发送聊天数据类型给服务器,服务器端将请求转发给SerConClientThread处理,SerConClientThread先接到聊天请求,然后判断Message类型,把内容发给聊天对象。
4详细设计
该系统总共有2部分:
客户端与服务器端[7]
4.1系统流程图
4.1.1系统总体流程图
系统总体流程如图4-1所示:
图4-1系统总体流程图
4.1.2系统客户端流程图
系统客户端流程如图4-2所示:
图4-2客户端流程图
4.1.3系统服务器端流程
系统服务器端流程如图4-3所示:
图4-3服务器端流程图
4.2编写客户端程序
4.2.1收集用户登录信息
程序将由Qq登录界面搜聚用户登陆信息,如图4-4所示:
图4-4登录界面收集用户登录信息
登录成功后就能看见好友列表,如图4-5所示:
图4-5好友列表界面
4.2.2验证用户登录信息
用户为空或者密码错误时,将返回“用户名或密码错误”状态[]。
如下所示:
图4-6用户登陆是否合法
4.2.3好友列表界面
好友列表界面如图4-7所示:
图4-7好友列表界面
当用户登录成功后,会进入好友列表界面,该界面内显示在线好友为彩色头像,下线好友为灰色头像,当将鼠标放与某位好友头像上时,该好友ID号会显示为红色(默认为灰色)[6]。
当用户双击好友列表内的在线好友时则会弹出与好友聊天界面,可与该在线好友进行信息交流。
4.2.4用户聊天界面
用户聊天界面如图4-8所示:
图4-8用户聊天界面
4.3编写服务器端程序
4.3.1服务器端界面
首先编写一个服务器端的简单界面,上有2按钮。
分别是“启动服务器”和“关闭服务器”,界面如图4-9所示:
图4-9服务器端界面
4.3.2服务器监听客户端连接
当启动服务器,点击“启动服务器”按钮后,服务器在固定端口开始进行监听,等待用户的连接请求[8]
4.3.3服务器与客户端通讯
当服务起端监听到客户端发来的连接请求数据包的时候,服务器端开始进行对数据包进行处理。
连接建立后,服务器与客户端保持连接。
5系统不足及改进设想
该系统基本能够实现聊天的基本功能,但是与目前众多的即时聊天系统软件相比依然存在着许多的不足之处,下面本章节就对该系统的不足以及改进设想做出如下归纳介绍:
5.1客户端
5.1.1用户注册
该系统没有能够成功的连接和使用数据库,不能够很好的保存用户信息支持用户的注册,用户登录的ID都是程序设定好的固定ID,该系统登录窗体虽然设有用户注册按钮,但是其实形同虚设,在系统中并没有对注册的按钮进行设置相关的相应程序。
5.1.2其他控件设置
该系统登录界面虽设有“手机号码”、“电子邮件”、“隐身登录”、“记住密码”、“忘记密码”、“申请密码保护”、“注册向导”这之类的控件,就目前来看其实是为了做的更像人们所熟知的国内最为强大的即时通讯软件——QQ,但是在程序中并未编写相应的响应代码,有待于连接数据库之后进行添加完善,使各个控件都有自己的作用,使之更方便用户的使用,更加贴近现在的QQ产品。
具体界面控件如图5-1所示:
图5-1系统界面控件
5.1.3好友列表
(1)好友列表
好友的ID由于全部都是系统事先设定好的,所以比较难以辨别聊天的真实对象,等待后期添加连接数据库之后可以增设“好友备注”功能,并进一步完善增添“添加好友”功能。
(2)陌生人列表
在好友列表界面中的“陌生人”列表中的陌生人,其头像只是初步显示在好友列表内,其他的并未做太多的设置,还有待于完善其的内容,增添与陌生人列表聊天的功能,并使其能够像好友列表一样能够显示在线、下线好友。
陌生人列表如图5-2所示:
图5-2陌生人列表
(1)黑名单
在黑名单列表内并没有好友,可以在后期增设“删除好友”功能的时候相应做适当的添加。
(2)聊天界面
后期有待于增添发送文件功能,使之能够更改聊天文字字体并添加发送表情功能。
5.2服务器端
服务器端的界面及功能过于简单,后期有待于添加显示在线人数及名单功能,增添“强制用户下线”功能控件,增设显示用户聊天内容记录,以便于控制聊天内容。