毕业设计[论文]
题目:
学学专指
基于java的C/S模式网络聊天室的设计
生 姓 名: 学号: 部 (系): 业 年 级: 导 教 师: 职称或学位:
2009年 6月 1日
目 录
摘 要 ....................................................................................................................................................................I ABSTRACT .......................................................................................................................................................... II 1 绪 论 ............................................................................................................................................................... 1 1.1 聊天室的发展 ............................................................................................................................................. 1 1.2 即时通讯的应用 ......................................................................................................................................... 2 1.3各类通讯软件的介绍和比较 ...................................................................................................................... 3 2 实现聊天室的相关技术及环境 ......................................................................................................................... 7 2.1 JAVA概述 ...................................................................................................................................................... 7 2.2 TCP/IP协议常识 ........................................................................................................................................ 9 2.3系统开发工具与开发环境 ........................................................................................................................ 11 2.3.1开发工具 ............................................................................................................................................ 11 2.3.2开发环境 ............................................................................................................................................ 11 3 网络聊天系统的系统设计 ............................................................................................................................... 12 3.1项目概述 .................................................................................................................................................... 12 3.2功能需求 .................................................................................................................................................... 12 3.3系统建摸 .................................................................................................................................................... 13 3.4 聊天室系统的设计 .................................................................................................................................. 14 3.4.1 聊天系统工作原理图 ....................................................................................................................... 14 3.4.2系统实现原理 .................................................................................................................................... 15 3.4.3系统的设计过程 ................................................................................................................................ 15 3.5数据封装设计 ............................................................................................................................................ 18 4 聊天系统的实现及测试 ................................................................................................................................. 19 4.1系统用户界面设计 .................................................................................................................................... 19 4.1.1客户端界面 ........................................................................................................................................ 19 4.1.2服务器界面 ........................................................................................................................................ 21 4.2系统设计 .................................................................................................................................................... 22 4.2.1客户端结构 ........................................................................................................................................ 22 4.2.2服务器端结构 .................................................................................................................................... 23 4.3客户端功能实现的测试 ............................................................................................................................ 24 参考文献 ............................................................................................................................................................... 31 致 谢 ................................................................................................................................................................. 32
2
摘 要
网络聊天室是一种应用广泛网络聊天方式,操作简单,功能丰富,是教学和学习面向对象的编程思想的理想项目。可以使用多种编程语言设计和开发出功能完善的网络聊天室。
本毕业设计介绍Java语言设计与实现一个网络聊天室过程,本系统采用C/S构架设计,整个项目分为服务器端和客服端。使用了新的Java2标准Swing组件,开发出简洁美观和布局合理的用户和服务器界面;利用Socket网络开发技术实现客户端和服务器端的连接访问,实现网络功能;通过数据流操作的合理设计,实现信息传递、接收和数据保存。同时,采用多线程、多任务的 设计思想,开发出性能稳定,功能全面的服务器。完整的实现系统的功能。
通过本次毕业设计可以学到如何应用和实现面向对象的各种方法,如何使用Eclipse集成开发环境来创建和开发项目,从而完成系统的完整开发。
关键字:聊天室;Java;Socket; C/S ;UDP;多线程
I
Abstract
The network chat room is a kind of applied extensive network chat method ,operate in ease and the function is abundant, It can be used as a good case for learning of java design language and the Object-Oriented Programming language, there is many programming language of design to develop a network chat room with perfect function.
This graduation thesis of design introduction how to use the java language design and carry out network chat room, the system adoption the C/S structure design, the whole system is divided into the server and client. Use standard modules of Swing of latest java2, develop a simple and direct beauty user interface, We make use of the Socket technology to interconnect the server and client by net-work; organize the data by good design of data stream to sent or accept the message between users and to record the message for ever, we also use the multi-thread multi-action to make the program with many function.
I have leaned many method and things to use the Object-Oriented programming. And make me know how use the development environment Eclipse to new program and the process to make the program.
Key Words: ChatRoom; Java; Socket; C/S;UDP; multi-thread
II
1 绪 论
网络技术是计算机领域中发展最为迅速的技术之一,它在政治、经济、生活等各个方面发挥着十分重要的作用。随着计算机网络的普及和推广,将会有越来越多的人利用网上资源,享受不断发展和完善的网络服务,以此来提高工作效率和水平。随着我国经济发展和网络的普及,网络技术也越来越多地被应用于日常工作之中。在程序设计领域,面向对象的编程技术正在逐步代替面向过程的程序设计技术,成为计算机应用设计开发的主流,尤其在网络技术开发中,面向对象的Java语言编程和相关的Java技术正在以前所未有的速度发展。网上购物、网上银行、远程教学、网络聊天、网络游戏等都开始使用Java技术。而且Java使平台无关性的思想成为现实,的Java程序可以被编译为与平台无关的字节码,这种字节码可以运行在任何拥有Java解释器的机器上。 真正降低了企业成品和程序员的负担。
随着信息科学的进步与互联网络的发展,虽然通过网络的聊天软件很多,但针对于内部系统的、局域网内的聊天和公司内部的上下级沟通的聊天通讯软件却很少。所以开发一个此类型的即时通讯系统就变得非常有意义了。而在技术选择上Java技术自然成为实现此系统的首选。
1.1 聊天室的发展
聊天室做为即时通讯的一种,即时通讯(Instant Messenger,简称IM)软件可以说是目前我国上网用户使用率最高的软件,无论是老牌的ICQ,还是国内用户量第一的腾讯QQ,以及微软的MSN Messenger都是大众关注的焦点,它们能让你迅速地在网上找到你的朋友或工作伙伴,可以实时交谈和互传信息。而且,现在不少IM软件还集成了数据交换、语音聊天、网络会议、电子邮件的功能。
IM软件的历史并不久远,但是它一诞生,就立即受到网民的喜爱,并风靡全球。在它的发展史上,以色列人是功不可没的。正是四位以色列籍的年轻人,在1996年7月成立的Mirabilis公司,并于同年11月推出了全世界第一个即时通讯软件ICQ,取意为“我在找你”——“I Seek You”,简称ICQ了。直到现在,ICQ已经推出了它的2002a版本,在全球即时通讯市场上占有非常重要的地位。
目前,国内最为流行的即时通讯软件是OICQ(简称QQ)。它以良好的中文界面和不断增强的功能形成了一定的QQ网络文化。Messenger虽出道较晚,但依托微软的强大背景,实力也不可小视。作为Windows XP的一部分,Messenger 整合了操作系统的许多功能,如多种形式的聊天选择、多人的单窗口讨论式交流以及充分的文件与桌面共享
1
功能等。它的令人耳目一新的中文界面和注册方式,连同它强大的功能,着实吸引了众多的眼球的注视,此外还有许多有特点的IM软件。
1.2 即时通讯的应用
即时通讯软件除了可以实时交谈和互传信息,不少还集成了数据交换、语音聊天、网络会议、电子邮件的功能。下面介绍的即时通讯软件的主要应用功能:
文字聊天
聊天功能是IM软件最基本、也是最重要的功能,基本上每一种IM软件在这个功能上的操作都差不多:如果用户想与联系人进行聊天,可以双击IM中联系人的头像,在弹出的对话框中敲入文字信息发送即可。QQ的特点是可以给不在线的朋友发送信息,对方下次上线的时候可以收到,MSN虽然不具备这样的功能,但是它在聊天过程中可以使用各种漂亮的表情图标为聊天添加了不少情趣。
语音聊天
如果打字聊天的方式已不能满足,QQ还提供了“二人世界”里的实时语音聊天,首先您得有音箱或者耳机、麦克风,然后就可以向您的网友发送连接到“二人世界”的请求,通过后双方不仅可以用文字聊天,还可以直接讲话。此外QQ还有传送语音功能利用此功能可以传送语音信息。首先用鼠标左键单击在线好友的头像,选择“传递语音”命令,然后就会弹出一个对话框,录音以后就可以发送了。
传送文件
IM软件能点对点的传输文件,有时候利用此功能要比使用E-mail还方便许多,当然此项功能必须在对方在线时才能使用。在QQ的好友头像上点击右键,选择“传送文件”,选定要传送的文件,点击发送,等待对方接受请求。此外,ICQ的文件传送功能还支持类似断点续传的功能,不必担心文件传送过程中发生突然中断的情况。
拨打电话
在MSN Messenger中提供了PC-PHONE的拨打电话功能,你可以在MSN Messenger软件主窗口中,单击操作窗口“我想”下面的“拨打电话”或者用鼠标右键单击要呼叫的人的名字,单击“拨打电话”,就可以开启拨叫电话功能。但在进行电话呼叫之前必须注册语音服务提供商。由于MSN Messenger在国内暂时还没有开通这项业务,所以我们还无法使用。
远程协助
远程协助是在Windows XP中引进的新概念,是Windows Messenger独有的功能,远程协助可以将电脑的控制权分享给对方以便于对寻求协助者提供帮助,通过它,对方可以很容易地控制寻求协助者的桌面。它的功能主要体现在应用程序共享、远程协助、
2
白板共享、寻求远程协助等方面。由于这一功能非常强大,在寻求协助的过程中系统会多次提醒并给出选择,请用户在使用这一功能时多加小心,确认对方是否可靠。
视频聊天
如果你的网速够快,又有摄像头的话,完全可以用IM软件来代替掉Netmeeting了,在聊天的同时,不仅可以通话,还可以看到对方的图像,表情,备感亲切,给您带来一份全新的感受。Windows Messenger对视频聊天功能支持的不错,设置和使用也非常简单,右击好友中“开始视频对话”就完成操作,非常方便。
邮件辅助
IM和E-mail是我们在网上最常用的两种工具,如今不少IM软件将两者作了完美的结合。在QQ中你可以直接给自己的好友发邮件,而无须再输入E-mail地址;此外对于自己的信箱QQ还有检查新邮件功能,在“系统参数”中设置您自己的E-mail,填好POP3地址,您可以选择定时检查时间,QQ就会自动检查有否新邮件到达。对于MSN Messenger来说它的邮件功能就更强大了,使用MSN Messenger你必须有一个邮件账号,每次当您的MSN Messenger登录成功时,在右下角自动弹出一个窗口,里面写有该E-mail账户内的信件状况,在使用过程中如果您的邮箱中有了新邮件,马上会冒出一个提示窗。
发送短信
目前IM与各种移动终端设备的结合也越来越多。使用QQ向手机发送短信需要手机开通移动QQ服务,单击对方头像图标,在打开的快捷菜单中选择“手机短讯”命令,在打开的对话框中输入信息,然后点击发送即可完成,这时对方的手机就可以收到一个消息。给BP机发短讯也是一样,不过对方的BP机服务台必须是QQ所支持的情况下才行。当对方的手机收到你发来的短信后还可以回复,这时候您的QQ会弹出“查看手机短讯”的窗口来,非常方便。
浏览咨询
有的朋友上网只是使用QQ聊天,其实用QQ也可以很方便的看到每日最新的新闻。点击QQ面板中的“资讯通”按钮,瞧,“资讯通”已经为您订制好新闻啦:“新闻”、“IT科技”、“证券”、“体育”、“娱乐”……共十二大类新闻信息。你愿意看哪方面的新闻,就点击相应的图标,则出现“资讯通”界面,自动提取出当日新闻标题。通过这些标题,你可以快速地选择出自己感兴趣的新闻,点击之就可以调用浏览器读取了。这样您就可以足不出户阅读有关内容,节省了您的查找时间、提高了浏览效率。
1.3各类通讯软件的介绍和比较
各种即时通讯软件,真可谓“尺有所短,寸有所长”!ICQ功能最强大,全球用户最多,但是设置比较复杂,而且没有中文版本;MSN有着和Windows系统紧密结合的优点;QQ则依托自己强大的本地优势,在国内即时通讯软件中抢占了先机。
3
“小企鹅”与“巨人新星” 1、即时消息的发送
这是作为即时通讯软件的最基本的功能。从发送消息的长短来看:QQ一次最多可发送450个汉字,而MSN最多也只有 400 个字符(200个汉字);同为中文界面的QQ与MSN,却采用了完全不同的设计思路。从界面上来看,QQ采用“对话模式”和“普通模式”两种(如图1)。而MSN中只有一种方式。对于用惯了QQ的网友来说,可能会将一句并没说完的话发送出去,而按下“Ctrl+回车”仅仅是起换行作用。从发送字符格式的控制上,MSN无疑是占尽上风,不仅支持字体、字号大小以及字色的设置,这一点普通网友或许并不多用,但MSN能够将诸如“:)”之类的图示符号自动转换为“笑脸”等表达心情和表情的图形,这点功能的确是非常棒的一种设计。
2、记录的保存和再现
这一点是QQ的强项。几乎不用做任何动作,与所有网友的聊天记录都被完整地保存,只要你不去清理它,完全可以把两年前与MM聊天时MM的承诺重现在MM面前,不怕MM不招!呵呵。而MSN在这点上是先天的缺陷。要想保存,就自己一边聊一边慢慢地“Copy”吧。
3、用户的注册和好友的添加
由于腾讯的用户量急剧增加,使得QQ的新用户ID申请变得异常困难。腾讯转而向移动通讯用户开放这一通道,尽管在功能的延伸方面取得了成功和突破,却因此也“激怒”了广大的网友!同时,添加好友异常方便,也使得我们自己的QQ上经常无端地收到许多莫名其妙的广告或垃圾信息以及一些“不受欢迎”的网友的“入侵”!而MSN与众不同的注册设计,加上Hotmail和MSN.com两大免费邮箱的隆重推出,使得我们的MSN可以非常清静!
4、其他功能比较
QQ和MSN都有语音聊天、文件传输、启动NetMeeting进行视频聊天等功能,QQ在语音音质、传输速度等方面略逊一筹,但总体功能设计上差别不大。但QQ独有的卡通人物头像的绝妙创意,是任何一款即时通讯软件也无法与之媲美的。
不仅如此,腾讯还形成了自己完整的企业文化,像各种各样的QQ玩偶、手表、T恤、背包、钥匙链等应有尽有,网上销售再加上全国数十家Q-GEN专卖店以及与移动厂商的合作等工作都进行得红红火火,而这些都是时间沉淀积累的结果,初来乍到的MSN应该是无法比拟的。而MSN也以其方便的消息群发(单击“我要……”下的“邀请他人加入该聊天”)和强大的资本和技术上的优势,完全有能力和可能继续向QQ发起新一轮的攻击。
“三朝元老”与“巨人新星”
4
ICQ与MSN放在一起比较,的确很有意思。一个是即时通讯领域的“大哥大”,另一个是软件业的“巨无霸”,即时通讯领域的后起之秀。从功能上看,MSN目前显然无法与ICQ相抗衡。但MSN借助与操作系统的无缝结合,任何人都不敢对它无礼和小视。
1、分组支持情况
两者都支持对好友进行分组,且都有两种模式,即组模式和状态模式。两个软件的组模式几乎相同,都是以组为主进行分类排序,即首类为组,每个组的下面再按在线和离线两种情况分类。所不同的是,ICQ的默认组只有一个,而MSN则提供了四个默认组:家人、朋友、同事及其他联系人。ICQ的默认组可以重新命名但不能删除;MSN默认组中“其他联系人”既不能重命名也不能删除,其他三组则都允许。
2、消息群发功能
MSN与ICQ都有消息群发功能。但MSN只能通过“邀请其他联系人加入”的方式进行,而且有最多加入四人(共五人)的。但ICQ的消息群发功能却很强大。在对话模式下,单击“Multiple”即可展开所有好友的列表。没有人数,也没有在线与否的(如图2)。
3、其他功能比较
任何一款免费软件的使用过程中,都会被强制地安插进一些广告内容,ICQ也不例外。对于这一点,财大气粗的微软做得很好。无论是Windows XP中捆绑的MSN,还是网上免费下载的,几乎看不到广告的影子。另外,即使在最新的ICQ2002a中,似乎仍然不能支持网络摄像机和视频聊天等功能,而这些功能在即时通讯领域几乎成了必备的功能。不过,ICQ中强大的查找好友功能,使你只需记住好友的哪怕是一点点信息,就可以轻松找到这位好友,令任何一款即时通讯软件都望尘莫及(如图3)。新版2002a中还新增了服务器保存好友信息的功能,使得在世界任何一个角落都可以及时方便地与好友进行联络。
其他产品简介
在即时通讯领域还有许多另类(非主流)的产品。如AOL Internet MSN、Yahoo! MSN(雅虎通)、SinaPager(新浪寻呼)、Sohu我找你、网易“口对口”、诺斯 TICQ 、梦幻寻呼(DICO)、OMMO、V2 Communicator、8dCall等等。因为它们的用户群相对较小,所以容易为人们忽视。但它们除了具备即时通讯的基本功能之外,都各有各的特点。这里只是挑选部分列举一下它们各自的特色功能:
1、雅虎通(Yahoo
MSN):用户可以通过它在线查询股票、新闻、体育记分板、
天气、旅游等各方面的信息;还可以享受到雅虎网站的各种个性化服务,包括:查阅来信、效率手册、获得股票报价、在线购物、拍卖投标、查询分类广告、访问俱乐部、玩游戏、和朋友聊天、阅读征友广告等等。
2、网易“口对口”:可以显示各种类型网页受欢迎的程度(点击率)。这样,你可以依靠访问量的大小来找到最受欢迎的网页(如图4);可以通过在右下角正确的设
5
置自己的四类状态(“我的意图”、“我的可见度状态”、“我的表情”和“我的状态),来充分展示自己的形象;可以即时了解自己的主页点击情况。方法是:点击“工具”菜单下的“主页观察站”,弹出设置主页URL窗口。输入自己网站的网址,设定好之后,每当你开启网易口对口时,主页观察站就会自动弹出。窗口中显示当前浏览该网页的用户人数(可见与不可见),以及在该页上的留言数目。
3、SinaPager(新浪寻呼):网上留言功能——如果您的朋友没有上网,您可以方便地用中、英文给他留言,他只要使用浏览器就可以看到您的留言了;类似翻译软件的浮动条的设计(如图5),可有效节约屏幕空间;与新浪网站、新浪电子邮件等紧密的结合功能。
4、 诺斯 TICQ:定制新闻——当主机端新闻更新时,你就可以在滚动条里看到最新的新闻了;自动弹出短讯/消息滚动——可以让消息在滚动条中滚动显示;查看笑话——不时在屏幕上弹出一则笑话,令人捧腹大笑;定时闹钟——可以指定时间让系统自动把设定的信息内容发送给你的网友,或者提醒自己该干的事情;断点续传——传送文件的功能几乎所有的即时通讯软件都具备。具备“断点续传”功能的即时通讯软件还真不多见,TICQ就是这样一款软件。
5、梦幻寻呼(DICO):邮件群发功能;丰富的插件使得我们可以聊天娱乐两不误(如图6);方便清晰的语音聊天功能——能够穿透防火墙,达到电话的音质效果;个人Web服务——可以把你的个人电脑轻松设置成一个Internet Web服务器,让网友到你的硬盘上浏览你的个人主页。
6、酷8d网络伙伴(8dCall):“听声辨人”可以以不同音效通知好友上线或来信;股票成交消息实时回报——只要你是8dCall的会员,只要你的下单券商提供8dCall股票成交回报功能,不论你采用哪种方式进行股票交易(电话、柜台、网络等),都可以实时得到股票成交回报的消息;线上免费传呼——使用8dCall可以免费传送中文、英文或数字到好友或合作伙伴的传呼机上。
6
2 实现聊天室的相关技术及环境
2.1 Java概述
1、背景
最近一年多来 ,在 Internet上出现的特别吸引人的事件就是Java语言和用 Java编写的浏览器 HotJava。 1991年 ,SUN MicroSystem公司的 Jame Gosling、 Bill Joe等人 ,为在电 视、控制烤面包箱等家用消费类电子产品上进行交互式操作而开发了一个名为Oak 的软件 (即一种橡树的名字 ),但当时并没有引起人们的注意 ,直到 1994年下半 年 ,Internet的迅猛发展 ,环球信息网 WWW的快速增长 ,促进了 Java语言研制的 进展 ,使得它逐渐成为 Int ernet上受欢迎的开发与编程语言 ,一些著名的计算机 公司纷纷购买了 Java语言的使用权 ,如 Mi-croSoft、 IBM、 Netscape、 Novell、 Apple、 DEC、 SGI等 ,因此 ,Java语言被美国的著名杂志 PC Magazine评为 1995年十大优秀科技产品 ,(计算机类就此一项入选 ),随之大量出现了用 Java编写的软件产品 ,受到工业界的重视与好评 ,认为 \"Java是八十年代以来计算机界的一件大事 \微软总裁比尔·盖茨在悄悄地观察了一段时间后 ,不无感慨地说 :\"Java是长时间以来最卓越的程序设计语言 \并确定微软整个软件开发的战略从 PC单机时代向着以网络为中心的计算时代转移 ,而购买 Java则是他的重大战略决策的实施部署。
因此 ,Java的诞生必将对整个计算机产业发生深远的影响 ,对传统的计算模型提出了新的挑战。SUN MicroSystem公司的总裁 Scott McNealy认为 Java为 Internet和 WWW开 辟了一个崭新的时代。 环球信息网 WWW的创始人 Berners-Lee说 :\"计算机事业发展的下一个浪潮就 是 Java,并且将很快会发生的\"。 看来 ,使用 Java已成大势所趋 。
MicroSoft和 IBM两大公司都计划在 Internet上销售用 Java编写的软件。 Apple、 HP、 IBM、 MicroSoft、 Novell、 SGI、 SCO、 Tandem等公司均 计划将 Java并入各自开发的操作系统 ,而负责开发并推广 Java技术的 SunSoft公 司 (这是 SUN下属的一个子公司 ),将通过颁发许可证的办法来允许各家公司把 Java虚拟机和 Jav a的 Applets类库嵌入他们开发的操作系统 ,这样各类开发人员 就能更容易地选择多种平台来使用 Java语言编程 ,不同的用户也就可以脱离 Web 浏览器来运行 Java应用程序 ,这无疑是很受广大用户欢迎的 ,也为 Java语言的应 用开拓了极为广阔的前景。 (当然 ,各类 JavaOS之间的兼容性必须得到重视 ,好在 JavaSoft已保证将监督这种兼容性 )。
另外 ,由 JavaSoft推出的完全用 Java编写的 Internet上新型浏览器HotJava,比去年 alpha版更为实用 ,不仅能编制动态的应用软件 ,而且能编制完整的成套桌面
7
应用软件 ,将来还会提供更多的能帮助编制动态应用软件的模块 ,显然 ,这也是为 Java的应用提供了有力的例证。
今年 6月 7日 ,由 SUN公司和经济事务部信息发展局、信息技术研究所等单位牵头 ,成立了一个\"Java联盟 \参加的有 22个在相当著名的计算机公司 ,并在台北建立一个 \"Java开发中心 \在新竹建立一个\"Java语言实验室\以掀起开发与应用 Java语言的热潮。
则在今年 4月就举行了全岛的 Java杯比赛 ,在计算机界掀起了学习 Java的热潮 (尤其是在大学生们中 ,出现了一批 Java迷 )。
有人预言 :Java将是网络上的 \"世界语 \今后所有的用其他语言编写的软件统统都要用 Java语言来改写。 2、Java语言对软件开发技术的影响
工业界不少人预言 :\"Java语言的出现 ,将会引起一场软件 \这是因为传统的软件往往都是与具体的实现环境有关 ,换了一个环境就需要作一番改动 ,耗 时费力 ,而 Java语言能在执行码 (二进制码 )上兼容 ,这样以前所开发的软件就 能运行在不同的机器上 ,只要所用的机器能提供 Java语言解释器即可。Java语言将对未来软件的开发产生影响 ,可从如下几个方面考虑 :
1软件的需求分析 :可将用户的需求进行动态的、可视化描述 ,以提供设计 者更加直观的要求。而用户的需求是各色各样的 ,不受地区、行业、部门、爱好的 影响 ,都可以用 Java语言描述清楚。
2软件的开发方法 :由于 Java语言的面向目标的特性 ,所以完全可以用 O-O 的技术与方法来开发 ,这是符合最新的软件开发规范要求的。
3 Java语言的动画效果远比 GUI技术更加逼真 ,尤其是利用 WW W提供的巨大 动画资源空间 ,可以共享全世界的动态画面的资源。
4软件最终产品 :用 Java语言 开发的软件可以具有可视化、可听化、可操 作化的效交互、动画与动作 \要它停就停 ,要它继续就继续 ,而这是在电影与电视播放过程中难以做到的。
5其它 :使用 Java语言对开发效益、开发价值都有比较明显的影响。 3、应用前景
Java语言有着广泛的应用前景 ,大体上可以从以下几个方面来考虑其应用 : 1所有面向对象的应用开发 ,包括面向对象的事件描述、处理、综合等 ; 2计算过程的可视化、可操作化的软件的开发 ; 3动态画面的设计 ,包括图形图像的调用 ;
4交互操作的设计 (选择交互、定向交互、控制流程等 );
5 Internet的系统管理功能模块的设计 ,包括 Web页面的动态设计、管理 和交互操作设计等 ;
8
6 Intranet(企业内部网 )上的软件开发 (直接面向企业内部用户的软件 ); 7与各类数据库连接查询的 SQL语句实现 ; 8其它应用类型的程序。 4、Java的特点
Java语言有下面一些特点:简单、面向对象、分布式、解释执行、鲁棒、 安全、体系结构中立、可移植、高性能、多线程以及动态性。
2.2 TCP/IP协议常识
(1) TCP/IP协议的特点:
TCP/IP(Transmission Control Protocol/Internet Protocol)是传输控制协议/网际协议的缩写, TCP/IP是当今网络互联的核心协议。TCP/IP协议的体系结构共有四个层次,即应用层、传输层、网络互联层和网络接口层。
IP协议的作用:第一,它是网络层的协议,提供互联网上数据传输的统一格式。第二,提供不可靠的无连接的服务。第三,定义了互联网上的传输数据的基本单元,提供了供路由选择的信息,没有差错校验和处理的机制。
TCP协议的功能:差错控制——可靠性、面向连接、分段(Segment)、端口号。TCP是传输控制协议,是面向连接的提供了一种可靠的传输服务,它用三次握手和滑动窗口机制来保证传输的可靠性,及进行流量控制。
TCP/IP协议具有以下特点:
1、协议标准具有开放性,其于特定的计算机硬件及操作系统,可以免费使用。 2、统一分配网络地址,使得每个TCP/IP 设备在网络中都具有唯一的IP地址。 3、实现了高层协议的标准化,能为用户提供多种可靠的服务。 (2)TCP/IP协议进行传输数据传输的过程:
应用程序为了传输数据会调用TCP,将数据和对应的参数传给TCP,将TCP 数据包封装在IP包内,通过网络送给目的TCP。接收方TCP在接收到数据后通知上层应用程序,TCP将保证接收数据的正确性。在实现TCP的主机上,TCP可以被看成是一个模块,和文件系统区别不大,TCP 也可以调用一些操作系统的功能,TCP不直接和网络打交道,控制网络的任务由专门的设备驱动模块完成。TCP只是调用IP接口,向TCP提供所有TCP需要的服务。 (3)端口号:
有的时候,一个ip地址不能完整的标识一台服务器,这是应为一台物理性的计算机同时运行着多个应用程序,这就需要我们来区别同一台机子上的不同的服务,所以就在传输层和应用层上设置接口,就是端口。端口实际是一个16位长的 地址,他的范围是0~65535之间,其中0~1023是熟知端口,主要是给提供服务的应用程序使用,这
9
些端口是所有应用进程都只道的,1024~65535为一般端口,也称动态端口、连接端口,用来随时分配要求通信的个客户端应用程序。在数据传输过程中,各种服务器不断的检测分配给他的端口,一边发现要求和他通信的客户端。 (4)Socket的简介 Socket,简称套接字,用于实现网络上客户和服务器之间的连接。也就是说网络上两个或两个以上双工方式通信的进程之间总有一个连接,这个连接的端点成为套接字,套接字是在比较低的层次上通信的。 具体的说:一个服务器应用程序一般侦听一个特定的端口等待客户端的连接请求,当一个连接请求到达时,客户端和服武器端建立一个通信连接,在连接过程中,客户端被分配一个本地端口与一个socket建立连接,客户端通过写socket来通知服务器,以读socket中的信息,类似的服务器也获得一个本地端口,它需要一个新的端口号来侦听原始端口上的其他连接请求。服务器也通过它的本地端口连接一个socket,通过读写和客户端通信。 Socket程序的工作过程,如图2.1所示: 1、建立Socket连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接通道。 2、数据通信:利用虚拟连接通道传送数据信息进行通道。 3、关闭:通信结束时,再将所建的虚拟连接拆除。 7关闭 7关闭 图2.1 客户机/服务器socket通讯的工作模式图 5读 6写 6 写 5读 2监听 4接收 3客户端socketsocket 1服务器socket 第一次握手:原主机发送一个带有本次连接的序号的请求的一个数据帧。 第二次握手:目的主机收到请求后,如果同意连接,则发回一个带有一个本次连接序号和源端机连接序列号的确认。 10
第三此握手:源端机收到含有两次初始序列号的应答后,在向目的主机发送一个带有两次连接的序列号的确认。
具体的三次握手过程,如图2.2所示。
第一次握手,主机A向主机A 主机B
主机B发送连接请求 SYN=1,SEQ= 第二次握手,主机B收到主机A的请求,向主机A回发一个确认,,同时向主机A发送一个连接请求 ACK=1,SYN=1,SEQ= 第三次握手,主机A收到主机B发送的数据包在向主机B发送一个确认连接 ACK=1 图2.2 三次握手
2.3系统开发工具与开发环境 2.3.1开发工具
基于JAVA聊天系统的设计主要运用JAVA与语言与Socket类结合而开发。其开发的主要环境包括:
服务器端:(Windows平台)首先应有java环境jdk,建议采用jdk1.5以上,另外还需配置classpath环境变量,本系统开发工具为MyEclipse5.5;
客户端:只要有java环境jdk就可以,建议jdk1.5。
2.3.2开发环境
本系统运行环境所需用到的环境为: 硬件配置 :
处理器(CPU) :P4 2.0G的处理器;
硬 盘:40GB以上硬盘; 内 存:512 DDR内存; 显示器:17寸显示器等; 显 卡:128M显存显卡 软件环境:WINDOWS XP、Eclipse、jdk1.6.03等
11
3 网络聊天系统的系统设计
3.1项目概述
人们日常生活中越来越多地使用这项新技术来为自己的工作和学习服务。一个操作简单、友好、运行稳定的网络聊天室对于小型局域网内的用户可以起到很好的交流作用。本聊天室,所谓聊天室就是一个可以让许多用户同时互相通信的网上园地,个人用户可以通过网上聊天室将自己融入整个主流社会中。因此,在网上聊天室这个虚拟的社会中,可以结交各层次各地方的朋友,从而为自己获取更多的知识和更多的阅历。
该聊天室是为许多喜爱上网聊天的朋友开发设计的,希望能在现有的众多聊天室中给大家多一种的选择。和许多大型的网络聊天室相比该小聊天室功能比较简单,但是实现了聊天的基本功能,点对多聊天,点对点聊天等,基于时间和技术的原因,很遗憾传送文件、发送图片、视频聊天等尚未实现。
3.2功能需求
一个网络聊天室的运行,首先是要有一个完整稳定的服务器端,并且拥有很多个服务器端。客服端要具有实现用户注册和用户登陆,在登陆成功后,要显示出公聊界面,实现聊天功能并且能够发送表情和保存聊天内容和显示聊天记录等功能,在新用户上线和用户下线时要更新每个客户端在线用户列表名,并且可以和在线的用户实现一对一的私聊功能。
在服务器端可以实现不断的监听客服的连接,并且根据客户端发送过来的不同信息如注册信息,登录信息,公聊信息,私聊信息,退出信息等,服务器端要做出不同的响应,并且要实现数据库的操作,如根据用户注册的信息保存数据库中,根据登录时发送来的用户名和密码检测是否合法用户等。
客户端功能模块图如图3.1所示:
· 用户注册功能,实现用户的登陆ID注册和个人信息,并存入服务器数据库中。 · 用户登录功能,实现合法注册用户的登陆。
· 私聊功能,实现用户和在线的其他用户一对一的聊天方式。 · 公聊功能,实现用户和在线的所有用户聊天方式。 · 显示时钟功能。
· 查看聊天记录,实现用户查看已聊天的历史聊天内容。
· 发送表情和设置聊天内容字体,并可以设置字体颜色和背景色等。 · 过滤用户聊天中的不文明用语
12
用 户登 录 用户注册 公聊私聊字体颜色 字体大小 字体类型 表情 时钟 过滤不文明用语 聊天记录登陆 通讯 功能设置 记录保存 客户端
图3.1 客户端结构图
服务器端功能模块图如图3.2所示: · 可以不断的监听客户端请求
· 显示登陆客户的信息、当前在线人数、服务器开启状态、保存日志、用
户在线列表 · 发送系统消息 · 踢人
监听 请求 显示登录状况 当前在线人数服务器名称服务器IP服务器端口 保存日志关闭服务器用户信息 在线用户列表 发送系统消息 服务器管理 用户信息管理 服务器端 踢人 图3.2 服务器端结构图
3.3系统建摸
在聊天室的分析过程中,明确了系统主要有两类角色(Actor)及相关用例
13
系统管理员:系统管理员维护聊天室系统得所有信息,包括用护户管理、配置服务器参数等。
普通用户:普通用户可以使用系统进行聊天室服务,包括:注册用户名、登录服务器,聊天发言、退出聊天室等
根据前面的分析,得到了聊天室系统的用例(UseCase)图。如图3.3所示为整个系统的用例图。
图3.3 系统的总体用例图
注册User发言管理员系统参数维护聊天室管理登陆离开踢人3.4 聊天室系统的设计
3.4.1 聊天系统工作原理图
图3.4 聊天系统工作原理图
14
3.4.2系统实现原理
当用户聊天时,将当前用户名、聊天对象、聊天内容、聊天语气和是否私聊进行封装,然后与服务器建立Socket连接,再用对象输出流包装Socket的输出流将聊天信息对象发送给服务器端。
当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象,并将本次用户的聊天信息对象添加到聊天对象集Message中,以供所有聊天用户访问,具体实现过程如图3.5所示。 接收用户的聊天信息是由多线程技术实现的,因为客户端必须时时关注更新服务器上是否有最新消息,在本程序中设定的是3秒刷新服务器一次,如果间隔时间太短将会增加客户端与服务器端的通信负担,而间隔时间长就会让人感觉没有时效性,所以经过权衡后认为3秒最佳,因为每个用户都不可能在3秒内连续发送信息。
当每次用户接收到聊天信息后将会开始分析聊天信息然后将适合自己的信息人性化地显示在聊天信息界面上。
ServerClient建立服务器端 Socket等待并接收请求建立连接创建连接Socket向服务器发送请求接收请求后创建并连接 Socket开始通信InputStreamInputStreamOutputStream结束通信OutputStream 关闭Socket 关闭Socket图3.5 系统实现原理
3.4.3系统的设计过程
(1) 用户的登录/退出
用户发送登录请求,客户端获取用户登录信息并发送到服务器端,服务器启动用户登录管理线程,获取用户名和密码进行登录验证,将验证结果返回客户端显示,如图3.6示为普通用户登录/退出系统的时须图。
15
顶层包:::User程序客户端程序服务器端用户数据
发送登陆请求获取用户信息建立连接连接成功发送登录信息获取登录信息查询用户信息用户信息返回验证结果显示验证结果验证用户信息 图3.6 普通用户登录/退出系统时得时序图
(2)用户注册
用户第一次进入聊天室时需要进行用户注册才能登陆聊天室聊天。注册流程如下:用户提出注册请求,客服端响应,弹出注册信息对话框,用户输入相关信息并提交,客户端首先进行合法检查,确定无误后将数据信息发送给服务器端。服务器接收到请求后,启动单独得线程进行处理,首先进行合法性检查,确认登录名与系统中已注册得用户登陆名不相同后更新数据,并返回信息,客服端进行显示。如图3.7所示为用户注册的时序图。
16
图3.7用户注册的时序图
返回验证结果显示验证结果验证成功返回ID返回用户ID检测是否重复初步验证成功顶层包:::User发送请求获取用户注册信息验证注册信息发送注册信息获取注册信息查询用户信息程序客户端程序服务器端用户数据返回查询结果验证用户信息的合法性创建新用户显示结果
(3)发言
发言是聊天室的核心功能,用户提出发言请求,客户端接受发言的内容和其他各种设置(公聊或私聊),打包发给服务器端。服务器接收到请求后确定聊天方式。服务结果最后显示在客户端。如图3.8所示为发言的时序图。
17
程序客户端1 程序服务器端所有客户端顶层包:::User发送请求获取发言注册信息和相关设置信息打包发送信息包 获取信息包解包获得设置信息发送聊天室信息初步验证成功 返回操作结果发送操作结果
显示操作结果图3.8 发言的时序图
3.5数据封装设计
现在需要将数据封装设计E-R图转化为能被实际数据库系统所支持的实际数据模型。
Customer.java 对登陆的用户进行封装,包括:用户名 密码,用户头像。 Register_Customer.java对注册信息进行封装,包括:用户名,密码,性别,年龄,电子邮箱,用户头象。
Message.java对服务器端消息进行封装,包括:用户在线对象集,聊天信息集,被踢者姓名,公告。
Chat.java对客户端信息进行封装,包括:发言人用户名,聊天内容接受对象用户名聊天语气是否私聊。
Exit.java对退出用户进行封装,包括:退出者用户名。
18
4 聊天系统的实现及测试
4.1系统用户界面设计
界面是人机交互的窗口。用户界面接收用户的输入信息,并将程序执行的结果向用户输出。良好的用户界面能够提升用户的工作效率,是系统得到更好的声誉。
根据用例可以制定出用户界面,包括:用户界面的功能、与用户交互的信息,以及用户界面之间的切换关系等本聊天室,界面主要由2部分组成:
(1) (2)
客户界面 服务器界面
4.1.1客户端界面
客户端界面主要包括:登陆界面、注册界面、聊天室界面。
客户端主要完成与服务器的连接和各种数据的传送,为聊天室用户提供良好的人机界面。
用户要进入聊天室必须首先经过登录。聊天室的客户端登录界面如图4.1所示。用户必须指定用户名。输入密码。以及服务器的地址以及端口。
图4.1 登陆界面
用户第一次登录,需要注册,点击注册,将出现注册界面,如图4.2所示。
19
图4.2 注册界面
用户通过服务器验证,登录成功,将出现聊天室界面,如图4.3所示。
图4.3 聊天室界面
Java服务器主要提供各种聊天室服务,包括数据转发,用户信息维护,信息维护,其界面主要提供启动服务的功能,分为服务器管理和用户信息管理,如图4.4所示。
20
4.1.2服务器界面
图4.4 服务器管理界面
图4.5 用户信息管理界面
21
4.2系统设计
在将系统的界面设计完成时,就要开始进行系统的功能设计了,根据需求分析要求将分两个部分来进行设计: (1) 服务器端模块设计 (2) 用户端模块设计 4.2.1客户端结构
ChatClient.java 为客户端程序启动类,负责客户端的启动和退出。 Login.java 为客户端程序登录界面,负责用户帐号信息的验证与反馈。 Register.java 为客户端程序注册界面,负责用户帐号信息的注册验证与反馈。 ChatRoom.java 为客户端程序聊天室主界面,负责接收、发送聊天内容与服务器端的Connection.java 亲密合作
Windowclose 为ChatRoom.java的内部类,负责监听聊天室界面的操作,当用户退出时返回给服务器信息。
Clock.java 为客户端程序的一个小程序,实现的一个石英钟功能。 Login.java类成员函数如表4.1所示
表4.1 Login.java类成员函数表 函数名 Login() login() actionPerformed(ActionEvent)
返回值 无 无 无 功能 初始化登陆窗口 登陆事件响应方法 按钮监听响应 ChatRoom.java类成员函数如表4-2所示
表4.2 ChatRoom.java类成员函数
函数名 ChatRoom () run() exitChatRoom() actionPerformed(ActionEvent) Windowclose clearMessage() exit()
返回值 无 无 无 无 无 无 无 功能 构造方法初始化聊天室窗口 开启一个聊天室窗口线程 退出聊天室 按钮监听响应 监听窗口关闭响应 清屏 退出 Register.java类成员函数如表4.3所示
22
表4.3 Register.java类成员函数 函数名 ChatRoom () run() exitChatRoom() actionPerformed(ActionEvent) Windowclose clearMessage() exit() Connection.java类成员函数如表4.4所示
返回值 无 无 无 无 无 无 无 功能 构造方法初始化聊天室窗口 开启一个聊天室窗口线程 退出聊天室 按钮监听响应 监听窗口关闭响应 清屏 退出
表4.4 onnection.java类成员函数
函数名 Connection(ServerFrame,Socket,Vector,Vector) Run() ServerLogin() FreshServerUserList() ServerRegiste() ServerMessage() ServerChat() ServerExit() RemoveUser() Log() chatLog() 4.2.2服务器端结构
返回值 无 无 无 无 无 无 无 无 无 无 无 功能 创建与客户端的通讯连接 创建与客户端的通讯线程 登陆处理 更新服务器日志窗体在线列表 注册处理 发送信息处理 增加信息处理 用户退出处理 在线用户删除退出 日志信息 聊天信息 AppServer.java创建服务器,启动服务器,监听端口。如监听客户的请求,当有用户请求时创建 Connection线程。
Connection.java 处理登陆,注册信息,刷新服务器用户列表,对聊天信息进行处理, 用户退出处理,服务器信息处理,
ServerFrame.java为服务器端程序聊天室主界面,负责保存日志,显示服务器状态,做踢人处理
WordFilter.java 用户聊天内容过滤器
服务器处理用户登陆流程图如图4.6所示
23
获取登陆信息(用户名,密码)用I/O流读取用户信息文件设定判定标志find=0否用户名是否相同是没有该用户请注册find=1相同用户名下密码是否相同是是用户密码错误用online列表是否已经登陆否是该用户已经登陆是登陆人数是否超过50人上限否登陆人数过多登陆成功允许进入聊天室结束
图4.6 服务器处理用户登陆流程图
4.3客户端功能实现的测试
1. 用户注册的测试
当用户在登录时,必须输入用户名和密码才能进入,如果有一项为空,则弹出提示对话框提示请输入相应空白区的内容,如图4.7和图4.8所示。
24
图4.7用户登录异常
2.用户的注册的测试
当用户在注册时,必须输入用户名、密码、确认密码、年龄、电子邮箱才能进入,如果有一项为空,则弹出提示对话框提示请输入相应空白区的内容。当什么也没有输入时,会出现如图4.8所示的对话框。
图4.8
当什么也没有输入时,会出现如图所示的对话框。当输入的密码和确认密码不一致是,系统会弹出如图4.9所示的对话框。
25
图4.9
当没输入年龄或者年龄的输入不是数字时,系统会弹出如图4.10所示的对话框。
图4.10
当电子邮箱为空或者电子邮箱的格式不正确时,系统会弹出如图4.11所示的对话框。
26
图4.11
3.用户接收用户聊天信息
用户可以接收聊天室内所有在聊天室的用户的消息,并再接收时可以看到发送信息人所设定的表情,如图4.12所示,为了实现聊天室的用语文明,所以本聊天系统还实现了,非法聊天内容进行屏蔽,使聊天室更加友好文明化。
图4.12
27
本系统还实现了单人对单人的私聊,对自己的界面的字体和颜色进行改变,如图4.13所示。
图4.13
4.时钟功能
本系统实现了一个时钟的功能,以方便用户可以随时看到时间如图4.13所示。
28
图4.13
5.服务器踢人
服务器拥有踢限,可以踢除在线的用户,如图4.12所示。
图4.12
6.服务器公告
系统可以对所有的用户发系统消息,来通知用户各种各样的公告,如图4.13所示。
29
图4.13
7.服务器保存日志
系统可以对所有的用户登录和退出的信息,发系统消息,来通知用户各种各样的事情,如图4.13所示。
图4.13
30
参考文献
[1]Bruce Eckel.Java编程思想[M].北京:电子工业出版社,2006
[2]Cay S Horstmann,Gary Cornell.Java2核心技术[M].北京:机械工业出版社,2006 [3]陈刚.Eclipse从入门到精通[M].北京:清华大学出版社,2005 [4]冉浩.快易通Java程序设计[M].北京:北京大学出版社,2000
[5]叶至军.由浅入深——Java2自学手册[M].北京:人民邮电出版社,2004 [6]朱富喜.Java语言程序设计[M].北京:清华大学出版社,2005
[7]Art Taylor,Randy Layman,Brian Buege.J2EE Java黑客大曝光:开发安全的Java应用程序[M].北京:清华大学出版社,2003
[8] 杨丽娜.电子商务环境中J2EE的关键技术及其应用研究[D].武汉:武汉理工大学,2005
[9] 宛延闿.Java编程技巧[M].北京:机械工业出版社,2005
[10]钟珞,刘玲,夏红霞.基于JavaMail API的Web邮件系统开发[D].武汉:武汉理工大学计算机科学与技术学院,2006
[11]徐剑军,徐鹏.Java嵌入技术[M].北京:清华大学出版社,1998 [12]Jan Newmarch.Jini技术开发指南[M].北京:中国电力出版社,2003 [13]Paul B Monday.FMA和Jiro入门[J/OL].http://www.ibm.com [14]SUN.Java API中文文档[J/OL].Java.sun.com
[15]ncic.用Java实现网络语音信号传送[J/OL].http://wt.3800hk.com/index.html
31
致 谢
紧张而忙碌的毕业设计就要结束了,在完成了系统的功能设计后,我感到由衷的喜悦和自豪。在我做毕业设计期间,许多老师,同学和朋友给我我无私的关怀和帮助,在此,我要向他们表示衷心的感谢。
首先,我要感谢学校的老师在毕业设计期间给了我悉心的关怀与帮助,并且给了我许多关键的,建设性的指导。
这次的毕业设计让我受益匪浅。可以这样说,用计算机来解决繁重而低效的手工管理工作,计算机发展史上的必然。在理论课的学习中,我掌握了基础课和专业课的理论知识,也曾经做过一些程序设计的联系和计算机综合试验,但真正动手设计一个管理软件,还是第一次。在这次的毕业设计中,我曾遇到了许多困难,而在克服这些困难的过程中,我的各方面的能力又有了很大的提高,使我的理论知识更好的与实践相结合,增强了专业技能的可实践性。从调研,需求分析到查找资料,结构设计,详细设计以及调试程序,到最后的写使用说明书,我终于设计出了一个比较完整的,周密的,可使用的聊天系统。通过这次的毕业设计,我真正了解了软件工程设计的整个过程,既巩固了以前的理论知识,也为我以后的工作奠定了良好的基础。
当然,由于时间的短促,我所完成的系统并不是尽善尽美的,还有待进一步的修改和完善。最后,请允许我再一次向毕业期间无私帮助过我的老师,同学和朋友表示最衷心的感谢。
32
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务