版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.../课程设计说明书课程名称:Windows网络编程设计题目:基于JAVA网络聊天室设计学院:计算机科学与信息工程学院专业班级:网络工程12级指导教师:小组成员:2015年6月目录摘要1引言:11.需求分析11.1需求分析11.2系统简介22.系统开发技术22.1JAVA网络编程技术22.2Socket套接字32.3TCP三次握手33.系统总框图与功能分析43.1系统总框图43.2系统功能模块分析54.系统模块代码设计与分析64.1系统流程分析64.2类的设计与分析74.3客户端模块部分代码74.4服务器端模块部分代码:95.系统测试116.总结137.成员分工13参考文献:14网络聊天室摘要:随着我国经济发展和网络的普及,网络技术也越来越多地被应用于日常工作之中。在程序设计领域,面向对象的编程技术正在逐步代替面向过程的程序设计技术,成为计算机应用设计开发的主流,对于人与人之间通过网络的沟通和交流,聊天室是人们最常见、最直接的交流的方式。本聊天系统以聊天交流为主,为广大用户提供一个借助网络进行人际交往的平台,也是网络与现实最贴近的实用型应用。本文所介绍的网络聊天系统是基于JAVA应用程序开发设计的,其主要特性是简单、面向对象、分布式、解释执行、安全、体系结构中立、可移植、高性能、多线程以及动态性。关键词:局域网、聊天室、JAVA、Socket、WindowsSocket引言:目前,基于TCP/IP协议的网络得到了普及和飞速的发展,Windows下的网络程序越来越显得重要。利用TCP/IP协议提供的编程接口———Socket<套接字>可以开发出TCP/IP应用程序。正确的使用WindowsSocket,就可使得不同地址下的进程得以在Windows环境下顺利进行各种网络通信,因此研究WinSock更有意义。而基于TCP/IP协议网络环境下的应用程序是通过客户机/服务器<C/S>作用方式模式在网络<应用>编程界面实现的。本次实验采用java语言设计一个基于C/S模式的TCP网络通讯程序。实现客户端与服务器端之间的数据传输。1.需求分析1.1需求分析根据当前网络的需求,网络聊天越来越受到各种网民所青睐。因此开发网络聊天是相当有必要,而且在网站内增加聊天功能,它不仅可以提高网站的访问量,同时可以留着访客,更重要的是让访客透过聊天室实时的互相交流。而小组成员也都学习过JAVA语言,对网络编程也较有兴趣,为了更好的考验自己对JAVA语言的掌握程度,小组成员一致决定以《基于JAVA的网络聊天室》为课程设计,希望通过这一次能进一步提高我们的网络开发编程的能力。1.2系统简介聊天系统不外乎两个方面,服务器端和客户端。这里简要分析一下两个方面所要完成的任务:服务器端的任务:1、服务器端应当建立一个ServerSocket,并且不断进行侦听是否有客户端连接或者断开连接。
2、服务器端应当是一个信息发送中心,所有客户端的信息都传到服务器端,由服务器端根据要求分发信息。客户端的任务:1、与服务器端建立通信通道,向服务器端发送信息。
2、接收来自服务器的信息。系统开发技术2.1JAVA网络编程技术JAVA丰富的类库提供了大量的类以满足网络化、多线程、面向对象系统的需要。语言包提供的支持包括字符串处理、多线程处理、数学函数处理等,可以用它简单地实现JAVA程序的运行平台。实用程序包提供的支持包括哈希表、堆栈、可变数组、时间和日期等。输入输出包用统一的"流"模型来实现所有格式的I/O,包括文件系统、网络、输入低级网络包用于实现Socket编程。抽象图形用户接口包实现了不同平台的计算机的图形用户接口部件,包括窗口、菜单、滚动条、对话框等,使得JAVA可以移植到不同平台的机器。网络包支持Internet的TCP/IP协议,提供了与Internet的接口。它支持URL连接,WWW的即时访问,并且简化了用户/服务器模型的程序设计。2.2Socket套接字Socket,简称套接字,用于实现网络上客户和服务器之间的连接。具体的说:一个服务器应用程序一般侦听一个特定的端口等待客户端的连接请求,当一个连接请求到达时,客户端和服武器端建立一个通信连接,在连接过程中,客户端被分配一个本地端口与一个Socket建立连接,客户端通过写Socket来通知服务器,以读Socket中的信息,类似的服务器也获得一个本地端口,它需要一个新的端口号来侦听原始端口上的其他连接请求。服务器也通过它的本地端口连接一个Socket,通过读写和客户端通信。Socket程序的工作过程:1.建立Socket连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接道。2.数据通信:利用虚拟连接通道传送数据信息进行通信。3.关闭:通信结束时,再将所建的虚拟连接拆除。具体如下:1服务器serversocket1服务器serversocket2监听4.连接5读6写7关闭3客户端socket6读5写7关闭图1Socket套接字的建立与连接2.3TCP三次握手第一次握手:原主机发送一个带有本次连接的序号的请求的一个数据帧第二次握手:目的主机收到请求后,如果同意连接,则发回一个带有一个本次连接序号和源端机连接序列号的确认。第三此握手:源端机收到含有两次初始序列号的应答后,再向目的主机发送一个带有两次连接的序列号的确认。系统总框图与功能分析3.1系统总框图图2聊天系统框架图3.2系统功能模块分析图3系统功能图客户端:启动连接:默认连接IP为,端口为1228。聊天:用户可以给所有人发送信息,并能看到其他用户发送给自己或所有人的消息。断开连接:与服务器断开连接,无法发送与接收信息。服务器端:启动服务:绑定套接字,处于等待连接的状态,实时监控网络状态。侦听客户端:服务器端套接字一旦监听到客户端套接字的连接请求,它就响应客户端套接字的请求,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求断开连接:与客户端断开连接,无法侦听连接客户端。系统模块代码设计与分析4.1系统流程分析客户端:用服务器的IP地址和端口号实例化Socket对象。调用connect方法,连接到服务器上。将发送到服务器的IO流填充到IO对象里,比如BufferedReader/PrintWriter。利用Socket提供的getInputStream和getOutputStream方法,通过IO流对象,向服务器发送数据流。通讯完成后,关闭打开的IO对象和Socket。服务器端:在服务器,用一个端口来实例化一个ServerSocket对象。此时,服务器就可以这个端口时刻监听从客户端发来的连接请求。调用ServerSocket的accept方法,开始监听连接从端口上发来的连接请求。利用accept方法返回的客户端的Socket对象,进行读写IO的操作。通讯完成后,关闭打开的流和Socket对象4.2类的设计与分析ServerUI类:服务器端界面类,主要负责服务器端的界面设计Server类:此类负责创建绑定到指定服务器端口号的套接字,等待客户端连接ListenerClient类:此类负责侦听客户端发送信息并将信息广播出去ClientUI类:客户端界面类,主要负责客户端的界面设计ClientThread类:此类创建连接到服务器端的套接字,读取输入内容并发送4.3客户端模块部分代码客户端界面部分:publicClientUI<>{super<"客户端">;//创建ClientUI类的对象btStart=newJButton<"启动连接">;//启动连接按钮btSend=newJButton<"发送信息">;//发送信息按钮tfSend=newJTextField<10>;//构造一个列数为10的空TextFieldtfIP=newJTextField<10>;tfPost=newJTextField<5>;taShow=newJTextArea<>;//创建一个空的文本区域/*创建"启动连接"按钮的监听器对象,监听按钮发生的动作;*如果"启动连接"按钮被按下,则将创建的ClientUI的对象作为参数传递给ClientThread类**/btStart.addActionListener<newActionListener<>{publicvoidactionPerformed<ActionEvente>{//构造匿名内部类来实现接口ActionListenerserver=newClientThread<ClientUI.this>;}}>;/*创建"发送信息"按钮的监听器对象,监听按钮发生的动作;*如果"发送信息"按钮被按下,则将获取用户输入到文本框内的内容**/btSend.addActionListener<newActionListener<>{publicvoidactionPerformed<ActionEvente>{server.sendMsg<tfSend.getText<>>;tfSend.setText<"">;//设置文本框默认内容为空字符串}}>;/*创建窗口监听器,监听窗口的动作*如果窗口被关闭,则会弹出"确定关闭吗"的温馨提示窗口,以便用户选择*如果用户选择"是",则关闭窗口**/this.addWindowListener<newWindowAdapter<>{publicvoidwindowClosing<WindowEvente>{inta=JOptionPane.showConfirmDialog<null,"确定关闭吗?","温馨提示",JOptionPane.YES_NO_OPTION>;if<a==1>{System.exit<0>;//关闭}}}>;客户端连接部分:publicClientThread<ClientUIui>{//ClientThread类构造函数,接收客户端的界面对象this.ui=ui;try{client=newSocket<"",1228>;//这里设置连接服务器端的IP的端口println<"连接服务器成功:端口1228">;reader=newBufferedReader<newInputStreamReader<client.getInputStream<>>>;//构造客户端输入流并将字节转换为字符writer=newPrintWriter<client.getOutputStream<>,true>;//如果为true,则println、printf或format方法将刷新输出缓冲区}catch<IOExceptione>{println<"连接服务器失败:端口1228">;println<e.toString<>>;e.printStackTrace<>;}this.start<>;//启动客户端线程}4.4服务器端模块部分代码:服务器端启动部分:publicvoidrun<>{//线程开启后,执行以下操作try{ss=newServerSocket<1228>;//创建绑定到端口号为1228的服务器套接字对象ui.clients=newArrayList<Socket><>;//构造一个包含指定端口号的连接客户端的列表,启动服务器println<"启动服务器成功:端口1228">;while<true>{//如果服务器启动成功,执行以下操作println<"等待客户端">;Socketclient=ss.accept<>;//创建套接字对象,侦听并接受到此套接字的连接,在连接传入之前一直阻塞ui.clients.add<client>;//如果与客户端套接字连接成功,则将此客户端套接字添加到列表中println<"连接成功"+client.toString<>>;//将客户端套接字转换为字符串输出newListenerClient<ui,client>;//创建服务器端与客户端的监听器}}catch<IOExceptione>{//如果服务器启动失败,输出相应信息println<"启动服务器失败:端口1228">;println<e.toString<>>;e.printStackTrace<>;}}服务器端侦听部分:publicvoidrun<>{Stringmsg="";while<true>{try{reader=newBufferedReader<newInputStreamReader<client.getInputStream<>>>;writer=newPrintWriter<client.getOutputStream<>,true>;msg=reader.readLine<>;sendMsg<msg>;}catch<IOExceptione>{println<e.toString<>>;//e.printStackTrace<>;break;}if<msg!=null&&msg.trim<>!="">{println<">>"+msg>;}}}//把信息广播到所有用户publicsynchronizedvoidsendMsg<S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 碳达峰和碳中和背景下的新兴产业-碳达峰、碳中和专题
- 【教案】部编语文三上13 胡萝卜先生的长胡子【国家级】一
- 医疗平台课件
- 大学生新生培训计划
- 员工培训礼仪方案
- 小学四年级数学几百几十数乘以一位数质量自测题带答案
- 处方管理办法实施细则
- 福建省南平市2020-2021学年高二下学期期末质量检测化学试题
- 社区发展方案策划与实施社会工作专业教学案例宝典
- 医疗服务营销
- 民法Ⅱ学习通超星期末考试答案章节答案2024年
- 医学文献检索复习试题和答案解析(四)
- 2024-2025学年一年级语文上册第四单元测试卷(统编版2024新教材)
- 小学科学五年级上册第四单元《健康生活》作业设计
- 信息化项目施工进度计划及保证措施
- TCI 303-2024 厨余垃圾发酵制备污(废)水处理用碳源
- 中国高血压防治指南(2024版)
- 2024年全新初二生物上册期中试卷及答案(人教版)
- 2024-2030年中国电子俘获探测器(ECD)行业市场发展趋势与前景展望战略分析报告
- 02S515排水检查井图集
- 代卖商品合同协议书
评论
0/150
提交评论