已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档 1欢迎下载1欢迎下载1欢迎下载 课程设计指导书 姓 名 宣红东 宛立生 学 号 09838024 09838027 班 级 一 班 课程名称Java 课程设计课程性质 设计时间 2010 年 11 月 4 日 2010 年 12 月 31 日 设计名称聊天小程序 设计目的 本次课程设计是对前面学过的面向对象的编程思想以及编 程方法的一个总结 回顾和实践 开始设计前学生一定要 先回顾以前所学的内容 明确本次设计所要用到的技术点 并到网上搜索以及查阅相关的书籍来搜集资料 通过编写 一个基于 JAVA 的应用系统综合实例 来掌握 Java 语言编 程技巧 设计要求 1 使用图形用户界面 2 能实现一个聊天室中多人聊天 3 可以两人私聊 设计思路 与 设计过程 思路与原理 服务器端接受客户端的连接请求 同时启动一个线 程处理这个连接 线程不停的读取客户端输入 然后把输入加入 队列中 等候处理 在线程启动的同时将线程加入队列中 以便 在需要的时候定位和取出 过程 首先设计 ChatServer 服务端与 ChatClinet 客户端 1 服务器 ChatServerChatServer 使用 ServerSocket 监听指定的端口 端口可以随意指定 由于 1024 以下的端口通常属于保留端口 在一些操作系统中不可以随意使用 所以建议使用大于 1024 的端口 等待客户连接请求 客户连接后 会话产生 在完 成会话后 关闭连接 2 客户端 ChatClinetChatClinet 使用 Socket 对网络上某一个服务器 的 某一个端口发出连接请求 一旦连接成功 打开会话 会话完成后 关闭 Socket 客户端不需要指定打 开的端口 通常临时的 动态的分配一个 1024 以上的端口 具体详细的过程步骤及代码见下面 精品文档 2欢迎下载2欢迎下载2欢迎下载 计划与进度 计划在两个月内完成任务 首先在前半个月内 11 月 4 日 11 月 19 日 构思通过网上 图书馆 的知识与课本上的相关内容的了 解与认识 确认好选择的课题与怎样设计 基本的思路想好 十 五天 11 月 19 日 12 月 5 日 内参考资料争取完成服务端的程 序 在 12 月 5 日 12 月 20 日完成客户端的程序设计 在 12 月 20 日 12 月 30 日内完成实现报告的填写工作 在 12 月 31 日全 面完成整个课题 并上交给老师 任课教师 意 见 备 注 精品文档 3欢迎下载3欢迎下载3欢迎下载 课程设计报告课程设计报告 课程 Java 语言程序设计 学号 09838024 09838027 姓名 宣红东 宛立生 班级 一班 教师 范庆春 时间 2010 11 4 2010 12 31 精品文档 4欢迎下载4欢迎下载4欢迎下载 计算机科学与技术 设计名称 聊天小程序设计名称 聊天小程序日期 日期 20102010 年 11 月 4 日 设计内容 设计内容 设计一个在图形界面下 实现一个聊天室中多人聊天 也可以私聊的聊天小程 序 设计目的与要求 设计目的与要求 目的是为了更好的掌握 java 这门课程的内容 同时更好的理解与掌握 socket 编程 对所有面向对象的编程思想以及编程方法的一个总结 回顾和实践 掌握 Java 语言编程技巧 要求使用图形用户界面 能实现一个聊天室中多人聊天 可以两人私 聊 提示 使用 socket 通信 程序描述清晰准确 思路清晰 程序能够实现相应的功能 设计环境或器材 原理与说明 主要完成的功能 设计思路和框图 设计环境或器材 原理与说明 主要完成的功能 设计思路和框图 设计环境或者器材 j d k 或者 j c 编辑器 笔记本电脑两台 网线三条 小型交换机一 个 原理与说明 建立服务端与客户端的一个或者多个连接 其中服务器 使用 Server Socket 监听指定的端口 端口可以随意指定 由于 1024 以下的端口通常属于保留端口 在一些操作系统中不可以随意使用 所以建议使用大于 1024 的端口 等待客户连接请求 客户连接后 会话产生 在完成会话后 关闭连接 客户端 使用 Socket 对网络上某一个服务器的某一个端口发出连接请求 一旦连接成 功 打开会话 会话完成后 关闭 Socket 客户端不需要指定打开的端口 通常临时的 动态的分配一个 1024 以上的端口 主要功能 1 实现服务端与客户端的连接 实现两者之间的信息交换 精品文档 5欢迎下载5欢迎下载5欢迎下载 2 实现了一个服务器可以与多个客户端实现连接 即实现了一个聊天室里面可 以多人聊天 3 亦可以实现私聊的功能 设计思路与框图 服务器端接受客户端的连接请求 同时启动一个线程处理这个连接 线 程不停的读取客户端输入 然后把输入加入队列中 等候处理 在线程启动的同时将线程 加入队列中 以便在需要的时候定位和取出 大概的框图 chatServer 端 chatclient 端 创建 ServerSocket 对象在某 端口提供监听服务 等待来自 chartclient 的服务 请求 接受 chartclient 端的请求用 建立连接 创建 Socket 对象向 server 的 监听端 返回的 Socket 建立连接 口请求 通过向 Socket 中读写数据来 数据通信 通过向新的 Socket 中读写数据 来 与 chartclient 端通信 与 server 端通信 关闭 Socket 结束与当前的 拆除连接 关闭 Socket 结束与 server 的 通信 client 的通信等待其他的请求 关闭 ServerSocket 对象结束 监听服务 精品文档 6欢迎下载6欢迎下载6欢迎下载 设计过程 步骤 或程序代码设计过程 步骤 或程序代码 可以加页可以加页 主要代码 服务端主要代码 服务端 ChatServerChatServer classclass SocketThreadSocketThread extendsextends Thread Thread 线程类线程类 用于和用于和 每个客户端连接每个客户端连接 staticstatic VectorVector clientVector newclientVector new Vector Vector 存放存放 每个线程信息每个线程信息 privateprivate SocketSocket socket socket 存放每个线程存放每个线程 的的 SocketSocket 对象对象 StringString nick nick 存放每个线程存放每个线程 的昵称的昵称 privateprivate booleanboolean firstRead firstRead 用于判断是否用于判断是否 为第一次接收数据为第一次接收数据 SocketThread SocketSocketThread Socket s s 构造函数构造函数 socket s socket s nick null nick null firstRead true firstRead true privateprivate voidvoid noticeDelUser noticeDelUser 通告所有线程通告所有线程 的客户端的客户端 本用户退出本用户退出 StringString msg this nick msg this nick for intfor int i 0 i clientVector size i i 0 i clientVector size i if clientVector get i nick equals this nick false if clientVector get i nick equals this nick false sendMsg i msg sendMsg i msg privateprivate voidvoid delSocket delSocket 关闭关闭 socketsocket noticeDelUser noticeDelUser 通告所有线程通告所有线程 的客户端的客户端 本用户退出本用户退出 clientVector remove this clientVector remove this 从从 clientVectorclientVector 中移除本线程中移除本线程 try try socket close socket close System out println socket getInetAddress System out println socket getInetAddress 断开连接 断开连接 catch IOExceptioncatch IOException closeError closeError privateprivate voidvoid noticeAddUser noticeAddUser 通告所有线程通告所有线程 的客户端的客户端 本用户进入本用户进入 StringString msg this nick msg this nick for intfor int i 0 i clientVector size i i 0 i clientVector size i sendMsg i msg sendMsg i msg privateprivate voidvoid requestAllUser requestAllUser 本线程请求其本线程请求其 他有用户信息他有用户信息 精品文档 7欢迎下载7欢迎下载7欢迎下载 intint index 0 index 0 intint i 0 i 0 for i 0 i clientVector size i for i 0 i clientVector size i if clientVector get i nick equals this nick if clientVector get i nick equals this nick break break index i index i for i 0 i clientVector size i for i 0 i clientVector size i if index i if index i StringString msg clientVector get i nick msg clientVector get i nick sendMsg index msg sendMsg index msg privateprivate StringString msgForward StringmsgForward String msg msg 对接收到的信对接收到的信 息转发息转发 StringString name name 存放目的用户存放目的用户 昵称昵称 StringString tempMsg tempMsg 存放生成的转存放生成的转 发数据发数据 if firstRead true if firstRead true 若为第一次收若为第一次收 到数据到数据 intint i i for i 0 i clientVector size i for i 0 i clientVector size if i clientVector size 昵称不存在则昵称不存在则 nick msg nick msg 在在 clientVectorclientVector 中添加本线程信息中添加本线程信息 msg msg 您使用的昵称您使用的昵称 msg msg 并通告所并通告所 有线程的客户端有线程的客户端 本用户进入本用户进入 noticeAddUser noticeAddUser 以及请求其他以及请求其他 有用户信息有用户信息 clientVector add this clientVector add this requestAllUser requestAllUser firstRead false firstRead false else else msg msg 您输入的昵称已经存在 请重新输入 您输入的昵称已经存在 请重新输入 昵称昵称 存在存在 发送系统提示发送系统提示 returnreturn msg msg if msg startsWith true if msg startsWith true 若客户端发送若客户端发送 密语密语 精品文档 8欢迎下载8欢迎下载8欢迎下载 name msg substring 1 name msg substring 1 msg indexOf msg indexOf 获得目的用户获得目的用户 昵称昵称 生成发送信息生成发送信息 tempMsg this nick tempMsg this nick 悄悄对悄悄对 name name 说 说 r n t msg substring msg indexOf r n t msg substring msg indexOf else else tempMsg this nick tempMsg this nick r n t msg r n t msg 若为全体聊天若为全体聊天 name 610665c2a05631a7bc460993bae36ee6 name 610665c2a05631a7bc460993bae36ee6 此此 namename 为特殊为特殊 值值 专指全体聊天专指全体聊天 if name equals 610665c2a05631a7bc460993bae36ee6 false if name equals 610665c2a05631a7bc460993bae36ee6 false 若为密语若为密语 intint i 0 i 0 for i clientVector size i for i clientVector size if i clientVector size 若找不到目的若找不到目的 客户线程客户线程 则返回系统提示则返回系统提示 msg msg 您所发送的用户名昵称不存在 您所发送的用户名昵称不存在 else else sendMsg i tempMsg sendMsg i tempMsg 找到目的客户找到目的客户 线程并转发线程并转发 else else 为全体聊天为全体聊天 全全 体转发体转发 intint i 0 i 0 for i clientVector size i for i100000 if chatRecord getText length 100000 则清除部分历则清除部分历 史记录史记录 防止占用过大内存防止占用过大内存 chatRecord setText chatRecord getText substring chatRecord getText indechatRecord setText chatRecord getText substring chatRecord getText inde xOf r n 2 xOf r n 2 publicpublic voidvoid actionPerformed ActionEventactionPerformed ActionEvent e e 点击点击 sendButtonsendButton 则发送信息则发送信息 if e getSource sendButton if e getSource sendButton sendMsg sendMsg publicpublic voidvoid sendMsg sendMsg 向服务器发送向服务器发送 信息信息 if msgEditor null if msgEditor null if friendList getSelectedIndex 0 if friendList getSelectedIndex 0 发送全体聊天发送全体聊天 信息信息 socketWriter println msgEditor getText socketWriter println msgEditor getText else else 发送密语发送密语 并回并回 显显 socketWriter println friendList getSelectedItem toString socketWriter println friendList getSelectedItem toString msgEditor getText msgEditor getText 精品文档 13欢迎下载13欢迎下载13欢迎下载 chatRecord append this nick chatRecord append this nick 对对 friendList getSelectedItem friendList getSelectedItem toString toString 悄悄说 悄悄说 r n t msgEditor getText r n r n t msgEditor getText r n elseelse 若发送信息为若发送信息为 空空 则系统提示则系统提示 chatRecord append chatRecord append 不能发送空消息不能发送空消息 r n r n msgEditor setText msgEditor setText 将发送信息栏将发送信息栏 置空置空 classclass ReceiveThreadReceiveThread extendsextends Thread Thread 监视输入流的监视输入流的 类类 SocketSocket socket socket 连接服务器的连接服务器的 socketsocket ClientWindowsClientWindows clientWindow clientWindow 主窗口主窗口 ReceiveThread SocketReceiveThread Socket s ClientWindowss ClientWindows cw cw 初始化初始化 socket s socket s clientWindow cw clientWindow cw publicpublic voidvoid run run StringString msg null msg null BufferedReaderBufferedReader br null br null try try 建立输入流建立输入流 br newbr new BufferedReader newBufferedReader new InputStreamReader socket getInputStream InputStreamReader socket getInputStream catch IOExceptioncatch IOException ReadError ReadError clientWindow setWelcome clientWindow setWelcome 读入流建立错误 程序关闭 读入流建立错误 程序关闭 try try socket close socket close clientWindow setWelcome clientWindow setWelcome 与服务器连接已经断开 与服务器连接已经断开 System exit 0 System exit 0 catch IOExceptioncatch IOException closeError closeError System exit 0 System exit 0 while true while true 读取数据流的读取数据流的 信息信息 try try msg br readLine msg br readLine 获得信息获得信息 catch IOExceptioncatch IOException e e 精品文档 14欢迎下载14欢迎下载14欢迎下载 try try socket close socket close clientWindow setWelcome clientWindow setWelcome 与服务器连接已经断开 与服务器连接已经断开 System exit 0 System exit 0 catch IOExceptioncatch IOException closeError closeError System exit 0 System exit 0 msg msgChange msg msg msgChange msg 转变读取到的转变读取到的 信息信息 if msg null if msg null clientWindow addNewMsg msg clientWindow addNewMsg msg 向聊天窗口添向聊天窗口添 加新聊天内容加新聊天内容 privateprivate StringString msgChange StringmsgChange String msg msg if msg startsWith if msg startsWith 删除摸一个用删除摸一个用 户的信息户的信息 for intfor int i 1 i clientWindow friendList getItemCount i i 1 i clientWindow friendList getItemCount i if clientWindow friendList getItem i toString equals msg substring 3 if clientWindow friendList getItem i toString equals msg substring 3 clientWindow friendList remove i clientWindow friendList remove i clientWindow friendList select 0 clientWindow friendList select 0 returnreturn null null elseelseif msg startsWith if msg startsWith 增加某一个用增加某一个用 户信息户信息 clientWindow friendList add msg substring 2 clientWindow friendList add msg substring 2 clientWindow friendList select 0 clientWindow friendList select 0 returnreturn null null elseelseif msg startsWith if msg startsWith 系统提示系统提示 msg msg substring 1 msg msg substring 1 if msg startsWith if msg startsWith 您使用的昵称您使用的昵称 clientWindow nick msg substring 8 clientWindow nick msg substring 8 returnreturn msg msg 精品文档 15欢迎下载15欢迎下载15欢迎下载 设计结果与分析设计结果与分析 可以加页可以加页 运行 ChatServer 服务端 运行 ChatClient 端的界面如下图 当打开两个或者多个客户端时 实现多人会话或者一对一的会话当打开两个或者多个客户端时 实现多人会话或者一对一的会话 界面如下图 界面如下图 精品文档 16欢迎下载16欢迎下载16欢迎下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025中国华电科工集团有限公司所属部分基层企业面向系统内外招聘16人考试笔试参考题库附答案解析
- 2025北京工业大学聘用制人员招聘1人(第十六批)考试笔试参考题库附答案解析
- 2025安徽安庆市人力资源和社会保障局招募就业见习人员2人考试笔试备考试题及答案解析
- 2026年甘肃省天水市教育系统招聘部属公费师范毕业生和国家优师专项计划毕业生60人笔试考试参考题库附答案解析
- 电信行业新人培训试题及答案
- 2025年矿山法律法规试题及答案
- 2025上海科学院事业单位招聘8人(第四批)考试笔试模拟试题及答案解析
- 政治知识竞赛试题及答案高中
- 输油管线隐患治理项目商业计划书
- 2025安徽安庆怀宁消防救援大队招聘政府专职消防队员10人笔试考试参考试题附答案解析
- 2025家具、家居用品买卖合同范本
- 2025版麻疹常见症状及护理建议
- 保险规划实务家庭保障与财富传承
- 第二单元 课外类文(议论文阅读 ) 专项练-2025-2026学年统编版九年级语文上册
- 2026年湖南高速铁路职业技术学院单招职业适应性测试必刷测试卷必考题
- 行政事业单位财务与会计试题题库(附答案+解析)
- 2025年机械企业安全试卷及答案
- 2024-2025学年河南省濮阳市九年级(上)期中英语试卷
- 2025秋小学数学人教版一年级上册(三 认识立体图形)单元测试及答案
- 2025中国腰椎间盘突出症诊疗指南
- 2025年产前筛查技术专业培训班考核试题及答案(临床咨询)
评论
0/150
提交评论