聊天室的设计与实现.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 聊天室 设计 实现
- 资源描述:
-
Java 聊天室的设计与实现 学 院:计算机学院 专 业: 班 级: 学 号: 姓 名:秦向红 指导老师: 2014年11月 1。 设计背景 1 2. 设计环境 1 3。 设计目的 1 4。 Socket介绍 1 5。 Socket的通信机制图: 3 6.程序的设计 4 6.1服务器的设计 4 6.2客户端的设计 7 7. 测试及运行结果 10 7.1服务器的测试 10 7。2客户端的测试 10 8。设计总结 13 9。 参考文献 13 10。附代码 14 10。1服务器代码 14 10。2客户端的设计 17 Java 聊天室的设计与实现 1. 设计背景 在互联网如此发达的今天,即时通信工具已经成为我们如常生活中必不可少的一部分。人们对网络的依赖越来越多,越来越离不开网络,而由此产生的聊天工具也越来越多,类似有QQ、MSN、、微信等,网络聊天使网络聊天系统发展的日新月异,由此产生制作了一个简单的聊天功能的网络聊天程序,由此此设计我还可以更好的学习网络软件的编程知识. Java语言是当今流行的网络编程语言,它具有面向对象,与平台无关,安全,多线程等特点.使用java语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的的,嵌入式设备进行应用程序的开发.面向对象的开发是当今世界最流行的开发方法,它不仅具有更贴近自然地语义,而且有利于软件的维护和继承。 此次设计的题目为聊天室,可以巩固所学的java语言基础知识,增进java语言的编辑基本功,拓宽常用类库的应用,使我们通过教学环节与手段,把所学的课程及相关知识加以融会贯通,全面理解网络编程的含义。 2. 设计环境 操作系统:Window 8 CPU:1.80GHz 内存:4。00GB 硬盘空间:80G 开发工具:JDK1.5、Eclipse 3. 设计目的 聊天室虽然程序简单,但是在设计与实现的过程中能够充分学到基于Socket的网络编程的技术,使我掌握网络编程的服务的技术,能够充分利用我近期学到的java编程语言。实现聊天功能Client/Server的面向连接的编程技术。使用多线程进行多个客户端和服务器的连接,实现数据的读取与输入。 实现网络聊天系统的设计与实现,让我们掌握网络编程的服务的技术,让同学们更加深刻的了解,掌握这方面的知识 4. Socket介绍 Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务. Socket非常类似于电话插座。在这里,我以一个国家级电话网为例更加清楚的讲解一下Socket.电话的通话双方相当于相互通信的2个进程,区号是它的网络地址;区内一个单位的交换机相当于一台主机,主机分配给每个用户的局内号码相当于Socket号。任何用户在通话之前,首先要占有一部电话机,相当于申请一个Socket;同时要知道对方的号码,相当于对方有一个固定的Socket。然后向对方拨号呼叫,相当于发出连接请求(假如对方不在同一区内,还要拨对方区号,相当于给出网络地址).假如对方在场并空闲(相当于通信的另一主机开机且可以接受连接请求),拿起电话话筒,双方就可以正式通话,相当于连接成功。双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向Socket发送数据和从socket接收数据.通话结束后,一方挂起电话机相当于关闭Socket,撤消连接。 在电话系统中,一般用户只能感受到本地电话机和对方电话号码的存在,建立通话的过程,话音传输的过程以及整个电话系统的技术细节对他都是透明的,这也与Socket机制非常相似。Socket利用网间网通信设施实现进程通信,但它对通信设施的细节毫不关心,只要通信设施能提供足够的通信能力,它就满足了。 抽象出来,Socket实质上提供了进程通信的端点。进程通信之前,双方首先必须各自创建一个端点,否则是没有办法建立联系并相互通信的。正如打电话之前,双方必须各自拥有一台电话机一样。在网间网内部,每一个Socket用一个半相关描述:(协议,本地地址,本地端口)。一个完整的Socket有一个本地唯一的Socket号,由操作系统分配。 最重要的是,Socket是面向客户/服务器模型而设计的,针对客户和服务器程序提供不同的Socket系统调用.客户随机申请一个Socket(相当于一个想打电话的人可以在任何一台入网电话上拨号呼叫),系统为之分配一个Socket号;服务器拥有全局公认的Socket,任何客户都可以向它发出连接请求和信息请求(相当于一个被呼叫的电话拥有一个呼叫方知道的电话号码)。Socket利用客户/服务器模式巧妙地解决了进程之间建立通信连接的问题。服务器Socket半相关为全局所公认非常重要。 根据传输数据类型的不同,Socket主要分为三类: ①流式Socket(SOCK—STREAM),在这种方式下,两个通讯的应用程序之间要先建立一种虚拟连 接,提供可靠的、面向连接的通信流,它使用TCP协 议,从而保证了数据传输的正确性和有序性。 ②数据报Socket(SOCK—DGRAM),它使用数据报协议UDP,定义了一种无连接服务,数据通过相互独立的 报文进行传输,是无序的,并且不保证可靠、无差错. ③原始Socket,原始套接字允许对底层协议如IP或 ICMP直接访问,它功能强大但使用较为不便。主要用于一些协议的开发。 5. Socket的通信机制图: TCP服务器端 创建对象:Socket() 结束连接 回应数据 请求数据 发送连接请求 Connect() TCP客户端 接受服务的返回结果 Read() 关闭 Close() 向服务器发出服务请求 Write() 创建对象 Socket() 指定端口号:Bind() 监听客户端的连接请求:Listen() 阻塞等待连接的建立:Accept() 建立连接 接受客户端的请求消息 Read() 处理客户端的请求消息 Write() 处理结果返回给客户端 Read() 关闭 Close() 6.程序的设计 6.1服务器的设计 1。新建一个Java项目用来实现服务器的设计 2. 服务器主函数的创建,使用类TestServerSocket302 3.创建服务器的监听事件,使用类ServerListener02 4. 在服务器的监听事件中,主要指定服务器的端口号以及重写父类的run函数开启新的线程 5. 创建基于Socket通信的线程,使用类ChatSocket302 6. 在创建基于Socket通信的线程中,主要定义一个Socket变量 7. 然后在定义两个函数,一个用于处理数据的输入。 8. 另一个用于处理数据的输出 9. 实现服务器对客户端进行的管理,使用类ChatManager302 10. 实现服务器与客户端的连通中,重要的一点就是对类进行单例化处理,以为不是任何人都可以随便创建此类(即服务器)的,别人只可以连接服务器,而不可以进行创建。 11. 另外还设计的函数有添加客户端,移除客户端,以及对客户端的数据进行转发 6.2客户端的设计 1. 首先新建一个java项目,实现客户端的一些设计 2. 新建两个包,一个用于实现功能,另一个用于实现聊天的界面设计 3. 界面的设计首先需要新建一个JFrame,命名为MainView 4. 新建框架之后需要,需要为其添加编辑框,按钮,显示文本等的控件,添加之后还要为其布局,布局之后显示如下: 5.添加主函数,命名为TestClient302 6.添加对客户端的数据处理功能,创建类ChatManager302 7. 与服务器的创建一样,需要对客户端进行单例化处理,只有本类自己可以创建客户端,别人不可以随便创建 8. 另外有对服务器发送的连接请求函数 9. 对发送按钮的响应函数 7. 测试及运行结果 7.1服务器的测试 1. 运行服务器,查看显示结果 2. 测试服务器绑定的端口号(24302)。打开浏览器,输入127。0。0。1:24302 7.2客户端的测试 1. 运行客户端程序,并新建客户端 2. 客户端连接服务器 3. 当点击“确定"后,在客户端的显示框中,会显示“连接服务器的消息” 4. 创建多个客户端,连接服务器进行聊天 客户端1: 客户端2: 8。设计总结 基于孙老师讲的Socket的网络聊天系统的设计(C++编写版),由于近期我一直在钻研java编程语言,于是我就做了一个用java语言编写的基于Socket的网络聊天程序的设计。通过本次设计我又进一步对基于Socket的网络聊天有了新的了解,而且本次通过我自己独立设计程序,编写程序,使我对Client/ Server结构软件的设计有了新的认识。对网络编程有了进一步的了解. 在设计的过程中了解到自己的知识还是比较有限,使得程序还不够完善.回顾此次Java程序的编写。从理论到实践,可以学到很多东西,同时不仅可以巩固以前学的东西,而且学到了很多课本上学不到的东西,通过本次设计,使得自己懂得必须要把理论和实践相结合起来,从理论中得出结论,才能真正掌握这门技术,也提高了自己独立思考的能力,在设计的过程中,可以自己解决。真正体会到要将一门知识学到可以自己运用,才是属于自己的,因此我必须加强实践,多练习。 本次设计还有很多不足与缺陷,程序中还有很多问题需要完善。比如,服务器要记录客户端的聊天内容,服务器要显示客户端加载的个数,用户聊天时的登陆界面,图片和文件的加载等一些问题都需要完善.我会不断被改进与完善,还望老师多多指导.谢谢! 9. 参考文献 [1] java网络编程(第四版) 中国电力出版社 [2] java编程兵书 北京电子工业出版社 [3] java编程自学手册 机械工业出版社 [4] java实用编程技术 人民邮电出版社 [5] 网络编程实例 清华大学出版社 10。附代码 10。1服务器代码 10。2客户端的设计 第 6 页展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




聊天室的设计与实现.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/4124064.html