已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVAJAVAJAVAJAVA 网络编程课程设计报告网络编程课程设计报告网络编程课程设计报告网络编程课程设计报告 局域网内的多功能聊天室的设计与实现局域网内的多功能聊天室的设计与实现 院 系 计算机科学与技术学院 班 级 设 计 者 学 号 指导教师 设计时间 2010 年 2 月 5 日 2010 年 2 月 13 日 哈尔滨工业大学 威海 二 一 年二月 局域网聊天系统 1 哈尔滨工业大学 威海 课程设计任务书哈尔滨工业大学 威海 课程设计任务书 姓 名 学 号 院 系 计算机科学与技术学院 专 业 信息安全 任务起止日期 课程设计题目 局域网内的多功能聊天室 问题阐述与分析 网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯 网 络编程中有两个主要的问题 一个是如何准确的定位网络上一台或多台主机 另一 个就是找到主机后如何可靠高效的进行数据传输 在 TCP IP 协议中 IP 层主要负责 网络主机的定位 数据传输的路由 由 IP 地址可以唯一地确定 Internet 上的一台 主机 而 TCP 层则提供面向应用的可靠的或非可靠的数据传输机制 这是网络编程 的主要对象 一般不需要关心 IP 层是如何处理数据的 目前较为流行的网络编程模 型是客户机 服务器 C S 结构 即通信双方一方作为服务器等待客户提出请求并 予以响应 客户则在需要服务时向服务器提出申请 服务器一般作为守护进程始终 运行 监听网络端口 一旦有客户请求 就会启动一个服务进程来响应该客户 同 时自己继续监听服务端口 使后来的客户也能及时得到服务 网络聊天是网络编程的典型应用之一 编写网络聊天软件对于学习网络编程无 疑有着很大的帮助 本软件旨在为同一局域网用户间提供便利的局域网服务 局域 网用户可以通过此聊天软件在各终端相互发送聊天信息 同时可以快速传送文件 方便局域网用户间的快速有效通信 工作量 1 程序总体整体框架界面设计 2 用户登录模块设计 3 用户列表模块设计 4 文本聊天模块设计 5 客户端及服务器端程序的整合 工作计划安排 2010 年 2 月 5 日至 6 日 查阅资料 需求分析 设计程序整体框架功能及界面 2010 年 2 月 7 日至 10 日 程序代码编写 2010 年 2 月 11 日至 13 日 程序整合 撰写报告 局域网聊天系统 2 一 引言一 引言 本文围绕 Java 编程语言在网络编程方面的具体应用 论述了使用面向对象方法 对计 算器程序进行需求分析 概要设计 详细设计 最后使用 Java 编程实现的全过程 在编程 我们使用的 java 语言 是目前比较流行的编程语言 在当今这个网络的时代 java 语言在 网络编程方面的优势使得网络编程有了更好的选择 Java 语言最大的特点是具有跨平台性 使其不受平台不同的影响 得到了广泛的应用 二 需求分析二 需求分析 2 1 开发背景 在网络越来越发达的今天 人们对网络的依赖越来越多 越来越离不开网络 由此而产生的聊 天工具越来越多 网络聊天时一类的聊天系统的发展日新月异 因此产生了制作一个局域网的 网络聊天工具的 而且通过制作该程序还能更好的学习网络软件编程知识 2 2 功能要求 i 寻找服务器登录 ii 能够实现点对点单聊 iii 能够实现群聊 iv 能够实现文件传输 v 能够实现语音聊天 vi 能动态更新在线用户列表 三 系统设计三 系统设计 3 1 设计思想 整个系统分为服务器和客户端 服务器端维护各个客户端的信息 客户端的所有信息发 往服务器端 再由服务器进行消息的分析处理并做出相应的控制 服务器端是所有信息的中 心 服务器端可以查看所有用户的聊天记录 监控所有用户的状态 发出用户上线 离线提 示等公告 客户端则提供接收公告的功能 本课程设计按照系统的具体功能要求 首先应用 Socket 编程创建客户端和服务器端 每多个客户端服务器端就会相因的创建一个线程 它们之间通过这个连接来实现数据通信 然后在客户端设置一个监听器 用于监听服务器发来的消息 并根据消息做出不同的动作 3 2 系统功能 该系统实现了用户之间的点对点单人聊天 在线用户之间的群聊 为了加强之间的信息 局域网聊天系统 3 交流 还实现了用户之间文件传输 语音聊天 在客户端和服务器端都可以查看历史消息 保存消息 清空消息 为了监控用户之间的状态 服务器还可以实现踢掉用户的功能 同时 用户时间文件传输的信息都会在服务器上显示 3 3 系统架构 1 选择传输控制协议 TCP 使用 Java 的 Socket 编程机制 分别建立客户端与服务器端 语音传输使用的是 UDP 控制协议 2 分别设计客户端与服务器端的界面 并使用 Java 应用程序用户界面的开发工具包 Swing 进行窗体界面的布局 以及实现部分窗口事件的相应 3 4 模块设计 3 4 1 服务器端服务器端 主要实现向各个客户端发布系统消息 接受来自客户端的各种信息并分别处理 具体功 能如下 连接控制 包括启动服务器 断开服务器以及断开某个客户端的连接 管理作用 包括对参与聊天者的昵称进行修改以及向所有或某个客户端发送消息 维护一个 IP 地址和昵称所对应的哈希表 以便定位到正确的客户端 且有权强制修改用户昵称 刷新列表 在有用户登陆或离开的时候实时更新列表 并将信息反馈到各个客户端 登陆信息 检查用户是否已登陆 如登录 发消息通知所有用户 同时刷新在线用 户列表 聊天记录 能保存聊天记录 实现消息的保存 清空以及查看等功能 消息处理 解析客户端与服务器端的消息交互类型 并做出相应处理 能够找到消 息所对应的接收端 3 4 2 客户端客户端 主要实现向服务器端发布消息 并且对来自服务器的消息做出相应的响应 具体功能如 下 连接功能 输入服务器地址 实现登录及断开功能 登录设置 登录时 发送消息使服务器端获得相关登录信息 昵称及 IP 地址记录 到服务器端维持的哈希表 断开后发送消息使 IP 地址及昵称从哈希表 中删除 监听作用 实现对服务器发送过来的消息进行监听的功能 消息处理 接收由服务器端发送来的信息 并做出相应的响应 聊天记录 实现聊天记录的保存 清空以及查看等功能 消息处理 相应从服务器端接收到的消息交互类型 实现用户与用户之间的信息交 互和文件交互 传输进度 使用进度条直观地表示用户与用户间文件交互的进度 局域网聊天系统 4 文件传输 实现客户端之间的文件发送与文件的接收功能 语音聊天 实现客户端之间的语音聊天功能 四 详细设计与实现 4 1 服务器端 4 1 1 服务器 该段功能由 Server java 文件中的 Server 类实现 具体实现过程如下 启动服务并接收连接 服务器的任务首先是建立一个由 IP 地址到昵称的映射的哈希表 用于存放用户的基本信息 启动服务器后 等候建立一个连接 然后用这个连接产生的 Socket 创建一个 Client 同时检查该用户是否已存在哈希表中 若以存在 则提示该次连 接请求失败 从而实现限制 IP 的目的 若不存在 则将该 IP 地址及其昵称或默认昵称的映 射添加到哈希表中 接着服务器端向所有的用户发送管理信息 提示有新的用户登录 并且 将刷新后的用户列表同时发送到各个客户端 关闭服务 服务器端遍历哈希表 关掉每一个用户对应的 Socket 之后 关闭服务 Server 管理作用之发送消息 服务器端解析由客户端发送的请求 若控制字以 SPECIAL 开头 则通过控制字后的昵称从哈希表中找到对应的用户 实现服务器端到客户端的点对点 消息交互 若不是以 SPECIAL 开头 则实现消息的广播发布 管理作用之修改昵称 首先判断新的昵称是否在哈希表中存在 若已存在则给出错误 提示 否则通过该用户的旧昵称在哈希表中查找到该用户 并用欲修改的昵称替换掉原昵称 接着刷新服务器端的用户列表显示 最后刷新客户端的用户列表显示 管理作用之断开连接 若要断开某个客户端与服务器的连接 首先向该用户发送被管 理员请出系统的信息 然后通过该用户的昵称从哈希表中找到对应 socket service 及 IP 地址等信息 再从每一项信息对应的列表里删除该用户的信息 最后关闭该用户的 socket 同时刷新服务器端以及各个客户端的用户列表显示 在服务其中 需要同时处理多个客户端的请求 因此此处用到了多线程处理机制 在 服务器程序里创建单个 Server Socket 并调用 accept 来等候一个新连接 一旦 accept 返回 就取得结果获得的 socket 并用它新建一个线程 令其只为那个特定的 客户端服务 然后再调用 accept 等候下一次新的连接请求 4 1 2 界面设计 该段功能由 ServerFrame java 文件中的 ServerFrame 类实现 具体实现过程如下 窗口布局 服务器端窗口使用了 BorderLayout 事务管理器 把整个容器分成了五个区 域 North South East West 和 Center 每个区域放置一个面板 每个面板又分别 使用不同的事务管理器放置其他组件 如按钮 标签 文本框等 各个组将构成了一个 完整的服务器端界面 事件处理 通过 Java 的授权事件模型 针对组件 send Button1 Button8 通过 局域网聊天系统 5 addXXXListener 主要运用了 addActionListener 方法注册监听器 并且实现 ActionListener 接口中的 actionPerformed 方法 这样 当组件触发了相应类型的 事件后 此事件就会被传送给已注册的监听器 事件监听器负责处理事件 至此 实现了窗口对以下几个事件的响应 发送消息 保存消息 清空消息 查看历史消 息 启动服务 关闭服务 断开连接 修改昵称 五 运行结果 5 1 客户端登陆 5 2 服务器实现其管理功能 向所有客户端发送消息 局域网聊天系统 6 强制修改某个客户端的昵称 5 3 客户端群聊 局域网聊天系统 7 5 4 客户端与客户端间实现 私聊 5 5 客户端与客户端之间实现文件传输功能 文件发送 局域网聊天系统 8 件传输完成 六 结论与总结六 结论与总结 6 1 课程设计结论 通过 4 3 运行结果 可以看出 该课程设计利用 Java 应用程序 Socket 编程实现了以下 功能 使用 Java 的多线程处理机制建立两个套接字分别作为服务器端和客户端 局域网聊天系统 9 在服务器端实现了向各个客户端发布系统消息 接受来自客户端的各种信息并分别处理 的功能 可以控制客户端的连接以及对用户的管理作用 并且能够适时检测已登录用户的连 接状态且刷新在线用户列表 更能够解析客户端与服务器端的消息交互并做出相应处理 在客户端实现了向服务器端发布消息 并且对来自服务器的消息做出相应的响应 可以 连接到特定的服务器 设置自己的昵称 并且能够监听服务器端发送过来的消息并做出相应 的响应 更加能够与其他用户进行广播或私聊 以及实现文件传输 语音聊天等功能 由此 可见 本次课程设计完成了最初的设计要求 即实现了类似 P2P 的 QQ 聊天系统 有相应的客户端和服务器端 服务器端可以记录当前在线客户列表 把客户列表发送给每一 个在线客户 并实时刷新 任何一个用户都可以和任意其它的用户进行交互 即从在线客户 列表中选择一个或一组其它用户通过服务器的转发彼此进行信息的交互以及文件的交互 6 2 课程设计总结与体会 这个程序代码并不多 也不复杂 但程序编写中用到了 JAVA 中的 Swing 组件 面板容 器 事件处理 线程的创建 同步 输入输出处理 内部类 异常处理 和网络通信的知识 所以我还是很有收获的 在这次的课程设计中 我也用到了 Socket 类和 ServerSocket 类 明白了它们是 Java 实现 Socket 通信的主要工具 创建 ServerSocket 对象就创建了一个监听服务 创建一个 Socket 对象就建立了一个 Client 与 Srever 间的连接 明白了 Java 语言网络编程的可靠性 平台无关性 总之通过本次实验 掌握了使用 Java 语言进行面向对象设计的基本方法 提高运用面向 对象知识解决实际问题的能力 提高面向对象程序设计的能力 七 参考文献七 参考文献 1 Bruce Eckel Java 编程思想 M 北京 电子工业出版社 2006 2 Cay S Horstmann Gary
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年甘肃省临夏市高二生物下册期末考试模拟卷含完整答案【夺冠】
- 2026年吉林省图们市高二生物下册期末考试测试卷及完整答案【各地真题】
- 2026年山东省莱西市高二生物下册期末考试模拟卷及参考答案【预热题】
- 2025年辽宁省瓦房店市高二生物下册期末考试检测卷AB卷附答案
- 2026年幼儿园家长学校教案和比赛
- 2026年河南省辉县市高二生物下册期末考试模拟卷及完整答案(名师系列)
- 2026年幼儿园七巧板课件房子
- 2025年吉林省临江市高二生物下册期末考试考试卷及参考答案【培优A卷】
- 2025年辽宁省大石桥市高二生物下册期末考试考试卷附参考答案【A卷】
- 2025年广东省信宜市高二生物下册期末考试模拟卷标准卷附答案
- 安徽省马鞍山市初中生物七年级期末下册自我评估考试题详细答案和解析
- 思辨与创新智慧树知到期末考试答案章节答案2024年复旦大学
- 婴儿被动操操作考核评价标准
- XX城投(集团)有限公司内部审计管理办法
- (正式版)JBT 9229-2024 剪叉式升降工作平台
- 纤维肌痛综合征学习课件
- 学堂在线西南科技大学人工智能基础(2022秋)期末考试题答案
- 首件检验报告(装配)
- 初级电工技能培训一-电工常用工具
- 卢龙县鑫兴矿业有限公司采矿权出让收益评估报告
- 煤矿班组长培训课件
评论
0/150
提交评论