




免费预览已结束,剩余7页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机网络课程设计报告计 算 机 网 络课程设计报告题 目 : 简 易 聊 天 室 姓 名 : 学 号 : 班 级 : 一 问题描述和设计思想(1) 问题描述 在网络越来越便捷的今天,人们对网络的依赖也越来越多,越来越离不开网络,由此而产生的聊天工具也越来越多,其中应用比较广泛的有Netmeeting、MSN-Messager、腾讯QQ,等等。此类软件使得人们运用连上Internet网的电脑用户可以随时跟另外一个在线网民交谈,甚至可以通过视频看到对方的适时图像,互相讨论。使得人们不需要聚集在同一地点,不必担心昂贵的话费而畅快交流,工作、交流两不误。而且好的聊天室还有各种表情符号等可以加强我们的表达。而且费用低廉,信息交流速度快,在这个涌动的社会中加强联系,创造出更多的财富。在此基于Java网络编程的强大功能编写一个简易聊天室系统。 一般来说,聊天工具大多数由客户端程序和服务器端程序组成,本系统采用客户机/服务器架构模式通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能用多线程可完成多点对多点的聊天。因此使用Java的异步通信功能,实现网络通信的课程设计。功能要求:1. 有一个聊天服务器,存储帐户信息;2. 用户向服务器发送含有账户名的消息,服务器接受连接后,将账户名及其IP、端口记录下来,并刷新用户的账户列表;3. 服务器监控聊天内容;4. 支持多人聊天,聊天时列出当前所有在线的人员;5. 客户端之间可以单独发送消息;6. 支持图片表情;7. 保存用户聊天信息;(2) 设计思想Java是一种简单的,面向对象的,分布式的,解释的,键壮的,安全的,结构中立的,可移植的,性能很优异的,多线程的,动态的语言。Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。而且,Java很小,不需要占用多大内存。 因此运用JAVA程序编写聊天室,实现简单聊天功能。本次课程设计做的是Java简单聊天室,它是图形界面、线程、流与文件等技术的综合应用。在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。服务器端工作流程:服务器端通过系统调用创建一个ServerSocket与指定的本地端口绑定,就可以在端口进行侦听。如果有客户端连接请求,则创建一个Socket,将客户端地址赋给这个Socket。然后登录成功的客户就可以在服务器上聊天了。客户端工作流程:客户端程序相对简单,只需要建立一个Socket与服务器端连接,成功后通过这个Socket来发送和接收数据就可以了。Socket程序的工作过程:1. 建立Socket连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接道。2. 数据通信:利用虚拟连接通道传送数据信息进行通信。3. 关闭:通信结束时,再将所建的虚拟连接拆除。二 功能实现和系统结构系统功能如下:服务器:端口设置:设置倾听的端口号,默认为8888。启动服务:开启倾听端口,允许客户端连接。系统消息:服务器启动后可以在聊天室内发送消息。停止服务:关闭倾听端口,中断所有客户端的连接。退 出:关闭服务器。在特定端口上进行侦听,等待客户端连接。用户可以配置服务器端的侦听端口,默认端口为8888。向已经连接到服务器端的用户发送系统消息。统计在线人数。当停止服务时,断开所有的用户连接。系统运行稳定、安全可靠。一台主机只能启动一个服务器。客户端:用户设置:设置聊天时显示的名称,默认为匆匆过客。连接设置:设置要连接的服务器所在主机的IP地址和倾听端口。登 录:连接服务器。发送消息:进行聊天,可单独发送消息给聊天室中的一个人。注 销:与服务器断开连接。退 出:关闭客户端。连接到已经开启聊天服务的服务器端。用户可以配置要连接的服务器端的IP地址和端口号。用户可以配置连接后显示的用户名。用户可以更改聊天时的表情。当服务器端开启后,用户可以随时登录和注销。用户可以向所有人或某一个人发送消息。系统运行稳定、安全可靠。可以默认连接到自己主机启动的服务器。系统结构如图所示:否是服务器serversocket监听建立与客户端连接的套接字1.读客户端信息2.向客户端转发信息关闭服务器客户端socket1.读服务端信息2向服务器写信息关闭客户端启动AppServer.java启动ChatClient.java登录注册是否注册三、采用的主要技术、遇到的难点和解决方法1. 主要技术(1) 操作系统:Windows xp(2) 开发工具:eclipse3.2及其VE插件(3) 开发工具:Eclipse(4) 使用GUI界面设计(5) Java Swing技术2. 遇到的难点和解决难点:表情信息的传送解决:通过对发送消息进行解析,提取出表情图片的信息进行顺序输出。 四、核心代码描述和相关技术说明4.1 界面设计 本程序采用的是Java swing 图形界面开发工具包来设计的,建立一个主类Client.java,然后在其构造方法加载程序所需的组件,设置布局方式(采用的是Boxlayout布局管理器)。 构造方法如下:private void init() box = Box.createVerticalBox(); / 竖结构Box box_1 = Box.createHorizontalBox(); / 横结构Box box_2 = Box.createHorizontalBox(); / 横结构Box box_3 = Box.createHorizontalBox(); / 横结构box.add(box_1);box.add(Box.createVerticalStrut(8); / 两行的间距box.add(box_2);box.add(Box.createVerticalStrut(8); / 两行的间距box.add(box_2);box.add(Box.createVerticalStrut(8); / 两行的间距box.add(box_3);box.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8); / 8个的边距/ 开始将所需组件加入容器box_1.add(new JLabel(字体:); / 加入标签box_1.add(fontName); / 加入组件box_1.add(Box.createHorizontalStrut(8); / 间距box_1.add(new JLabel(样式:);box_1.add(fontStyle);box_1.add(Box.createHorizontalStrut(8);box_1.add(new JLabel(字号:);box_1.add(fontSize);box_1.add(Box.createHorizontalStrut(8);box_1.add(new JLabel(颜色:);box_1.add(fontColor);box_1.add(Box.createHorizontalStrut(8);box_1.add(new JLabel(背景:); 4.2 重点功能模块(1)启动和建立连接/* * 启动服务端 */public void startService()tryserverSocket = new ServerSocket(port,10);messageShow.setCaretPosition(messageShow.getText().length();/获取消息框字符串长度messageShow.replaceSelection(服务端已经启动,在+port+端口侦听.n);/在末尾添加消息startServer.setEnabled(false);startItem.setEnabled(false);portSet.setEnabled(false);portItem.setEnabled(false);stopServer .setEnabled(true);stopItem .setEnabled(true);MessagePane.setEnabled(true);catch (Exception e)System.out.println(e);userLinkList = new UserLinkList();listenThread = new ServerListen(serverSocket,combobox,messageShow,showStatus,userLinkList);listenThread.start();/服务端的侦听类启动4.3 客户端聊天模块1.功能设计(1)界面分为3部分:中间部分显示所有聊天信息,最上边部分设置用户名、IP地址和端口号,底部用于文字和表情的输入与发送。2.界面设计图3 聊天窗口(1) 从服务器获取聊天信息的线程,接受服务器发送信息的方法。while (!socket.isClosed() try String type = (String) input.readObject();if (type.equalsIgnoreCase(系统信息) String sysmsg = (String) input.readObject();String str = sysmsg.split(%);textarea.setCaretPosition(textarea.getDocument().getLength();textarea.replaceSelection(系统信息: );for (int i = 0; i str.length; i+) File file = new File(src/image/% + stri + %.gif);if (file.exists() textarea.setCaretPosition(textarea.getDocument().getLength();textarea.insertIcon(new ImageIcon(getClass().getResource(/image/% + stri + %.gif); else textarea.setCaretPosition(textarea.getDocument().getLength();textarea.replaceSelection(stri); catch (Exception e) System.out.println(e);4调试与测试 测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施。聊天室的设计是较为重要的部分,在先前简单的界面设计时较为简单,当通过在该类中添加实现对发送按钮监听时由于没有定义该类的方法连接使得发送按钮不能实现。对这个小问题的检查较为简单。4.4 服务器端模块1.功能设计(1)界面分为3部分:中间显示所有聊天信息;上边设置端口和IP地址,启动和停止服务器,还可以查看帮助;底部用于发送系统信息和查看聊天记录和在线人数。2.界面设计图4 服务器窗口3模块算法(1) 群发聊天信息public void sendToAll(String msg, String name) int count = userLinkList.getCount();int i = 0;while (i count) Node node = userLinkList.findUser(i);if (node = null) i+;continue;try node.output.writeObject(聊天信息);node.output.flush();node.output.writeObject(name + 群发: + msg);node.output.flush(); catch (Exception e) / System.out.println(e);i+;4调试与测试 服务器的是聊天系统中很重要的部分,这个界面设计较为简单,但在消息传送时出现了很多异常,主要是由于表情符号的文字混合是无法正确解析导致的。特别是将字符流放字节流刘缓冲区当中是后由于吧new给忘记了,在结果的运行中,服务器总是接收不到客户端信息,这些问题占据了我大半天得时间才调试过来。通过这一点我深刻体会到了细节决定成败。五、总结和体会对于本系统的实现,首先是构建一个聊天系统主要的框架,通过查找关于聊天系统的相关知识,建立一个聊天系统主要由服务器和客户端,用户的登录界面和注册界面,这是一个很简易的聊天系统。然后通过类的建立登录窗口类FrmLogin客户端窗口类Frmain、注册界面窗口类FrmRegist、服务器类ChatSever;由这些类运行出这几个主要的窗口类,在通过一个容器类RongQi来存储用户的信息,通过类Config读取相应的键对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年K2教育中STEM课程实施与科学教育改革实践探索研究报告
- 减重药物临床应用医药专家共识建议2025
- AI大模型赋能区域医疗医共体建设方案
- 华为人力资源体系发展的三个阶段(7P)
- 鲜花文化试题及答案
- 舞蹈理论试题及答案选择
- 黑龙江省哈尔滨市第九中学2024-2025学年高三下学期第五次模拟考试英语学科试题(原卷版)
- 广东省东莞市光正实验学校2024-2025学年高一下学期期中考试英语试卷(原卷版)
- 2025年贵州省贵阳市云岩区中考二模语文试题(含答案)
- 湖北省恩施土家族苗族自治州巴东县绿葱坡镇民族初级中学2024-2025学年七年级下学期6月生物测试题(含答案)
- 事业单位工作人员调动申报表
- (高清版)DZT 0280-2015 可控源音频大地电磁法技术规程
- 一个完整详细的箱涵清淤施工方案
- 老年医学专业知识培训课件
- DB44-T 2457-2024 地质灾害自动化监测规范
- 《水安将军》知识考试题库(800题版)
- 软件项目详细设计报告
- 提高医嘱执行准确率品管圈课件
- 《中国血压测量指南》规范化测量血压
- 2024年山西文旅集团招聘笔试参考题库含答案解析
- 医院培训课件:《发热伴血小板减少综合征医院感染防控》
评论
0/150
提交评论