版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、网络聊天程序设计钟安鸣2014.4目录 题目要求 技术架构 最基础的实例 网络协议设计 客户端设计 服务器设计题目要求(需求分析) 必须实现的功能(90分) (20分)用户注册(用数据库管理用户注册信息) (10分)用户登录(示例中已经基本实现) 在线用户维护(示例中已经实现) 公聊(示例中已经实现) (10分)私聊 (30分)文件传输 用进度条显示文件传输进度和传输速度 传输文件的过程中可以同时聊天,两者互不影响 文件接收方可以选择拒绝接受文件 用长文件测试(大于100M) (20分)信息加密传输 基于D-H密钥交换,采用AES算法加密;或者基于JSSE加密题目要求(需求分析) 可选的功能
2、(10分)表情/图片/用户头像(10分) (10分)用户状态(隐身、忙碌、Q我吧 ) (10分)消息漫游或离线消息 (10分)离线文件 (20分)用户分组管理(建群/群聊/群文件共享) (10分)服务器端踢人 跟老师协商后也可实现其它功能,并获得加分目录 题目要求 技术架构 最基础的实例 网络协议设计 客户端设计 服务器设计技术架构 系统采用C/S结构 聊天信息、用户状态信息通过服务器转发 文件采用P2P技术传输,即不需经过服务器转发,客户端之间直接传输文件 开发平台: MyEcplise 2014 或者VS.NET 2013(C#/MFC) 采用数据库保存用户注册信息(要求数据库中只保存用户
3、名和口令的SHA-1散列值) MySQL 或者SLQ Server 采用多线程、线程池、非阻塞通信技术提高并发性能目录 题目要求 技术架构 最基础的实例 网络协议设计 客户端设计 服务器设计最基础的实例 实现的功能 用户登录 无注册,无口令,直接用用户名登录 公聊 任何在线用户发送的消息,都会被转发给所有其它在线用户 在线用户列表维护 任一用户登录或退出,服务器和其它在线用户都应得到及时通知目录 题目要求 技术架构 最基础的实例 网络协议设计 客户端设计 服务器设计协议设计 为简化设计,示例程序中应用层协议由消息构成,每种消息用一个类来实现: 聊天消息 包括公聊消息、私聊消息、群聊消息(本示例
4、未实现) 用户状态消息 包括用户上线消息、用户在线消息、用户下线消息 文件消息 文件发送方和文件接受方用来交换信息的消息(本示例未实现)协议设计 公聊消息 作用:公聊,将聊天信息广播给所有在线用户 通信方:用户-服务器,服务器-其它在线用户协议设计 用户上线消息 作用:新用户登录时,通知服务器和其它在线用户 通信方:新上线用户-服务器,服务器-其它在线用户协议设计 用户在线消息 作用:当新上线用户登录时,由服务器把当前在线的用户发给新登录的用户 通信方:服务器-新登录用户协议设计 用户下线消息 作用:用户下线时,通知服务器和其它在线用户 通信方:下线用户-服务器,服务器-其它在线用户协议设计目
5、录 题目要求 技术架构 最基础的实例 网络协议设计 客户端设计 服务器设计客户端界面设计控件类型:JTextPane名称:textPaneMsgRecord控件类型:JList名称:listOnlineUsers控件类型:JButton名称:btnLogon控件类型:JButton名称:btnSendMsg控件类型:JTextField名称:textFieldMsgToSend控件类型:JTextField名称:textFieldUserName控件类型:JPasswordField名称:passwordFieldPwd控件类型:JButton名称:btnSendFile客户端代码设计 客户端
6、代码由两个类构成 Client类是GUI类,负责与用户交互 在Client类内部,用一个内部Runnable类来实现“后台监听线程”,监听并处理服务器传来的信息,类名为ListenHandler 客户端成功登录服务器后,就启动客户端的“后台监听线程”客户端功能设计 客户端程序启动 将发送文件按钮设为不可用状态 将发送消息按钮设为不可用状态客户端功能设计 用户单击“登录”按钮 如果“用户名”文本框为空,什么也不做否则 与服务器端建立Socket连接,如果抛出异常,则弹出对话框通知用户,并结束 向服务器发送用户上线信息,将自己的用户名和IP地址发送给服务器 在“消息记录”文本框中用红色添加“登录成
7、功”以及登录时间 将“发送消息”和“发送文件”按钮置为可用状态 创建并启动“后台监听线程”,监听并处理服务器传来的信息 将“登录”按钮设为“退出”按钮客户端功能设计 用户单击了“发送”按钮 如果消息文本框内容非空,将消息文本框中的内容作为公聊消息发送给服务器 在“消息记录”文本框中用蓝色显示发送的消息及发送时间客户端功能设计 “后台监听线程”收到了服务器转发来的用户上线消息 用绿色文字将用户名和用户上线时间添加到“消息记录”文本框中 在“在线用户”列表中增加新上线的用户名 “后台监听线程”收到了服务器转发来的用户在线消息 在“在线用户”列表中增加在线用户名 “后台监听线程”收到了服务器转发来的
8、公聊消息 用黑色文字将收到消息的时间、发送消息的用户名和消息内容添加到“消息记录”文本框中 “后台监听线程”收到了服务器转发来的用户下线消息 用绿色文字将用户名和用户下线时间添加到“消息记录”文本框中 在“在线用户”列表中删除下线的用户名客户端功能设计 用户单击了“退出”按钮 弹出对话框询问用户是否真想退出,如果是,则向服务器发送用户下线消息并退出程序目录 题目要求 技术架构 最基础的实例 网络协议设计 客户端设计 服务器设计服务器端界面设计控件类型:JTextPane名称:textPaneMsgRecord控件类型:JTable名称:tableOnlineUsers控件类型:JButton名
9、称:btnStart服务器的代码设计 服务器代码由主要由五个类构成 Server类是GUI类,负责与用户交互 在Server类内部,用一个匿名内部Thread类来实现“接受用户连接线程”,接受并处理客户端连接请求 在Server类内部,用一个内部Runnable类来实现“用户服务线程”,类名为UserHandler 每一个新用户登录服务器,服务器就为其创建一个“用户服务线程” UserManager类用来管理在线用户 User类对应一个在线用户服务器功能设计 用户单击了“启动”按钮 创建ServerSocket打开端口9999监听客户端连接 在“消息记录”文本框中用红色显示“服务器启动成功”和
10、启动时间信息 创建并启动“接受用户连接线程”,接受并处理客户端连接请求 将“启动”按钮置为不可用状态服务器功能设计 “接受用户连接线程”收到了客户端发来的Socket连接请求 调用serverSocket.accept()方法接受用户连接请求 为新来的用户创建并启动“用户服务线程”,并把serverSocket.accept()方法返回的socket对象交给“用户服务线程”来处理服务器功能设计 “用户服务线程”收到客户端发来的用户上线消息 向新上线的用户转发当前在线用户消息列表 向所有其它在线用户发送用户上线消息 用绿色文字将用户名和用户上线时间添加到“消息记录”文本框中 将用户信息加入到“在
11、线用户”列表中 “用户服务线程”收到客户端发来的公聊消息 用黑色文字将收到消息的时间、发送消息的用户名和消息内容添加到“消息记录”文本框中 将消息转发给所有其它在线用户 “用户服务线程”收到客户端发来的用户下线消息 用绿色字在“消息记录”文本框中显示用户下线消息及下线时间 在“在线用户列表”中删除下线用户 将用户下线消息转发给所有其它在线用户示例程序中待完善的地方 关闭服务器 出错处理 同一用户名多次登录,服务器应向客户端返回错误代码 未登录用户向服务器发送了公聊消息,服务器应向客户端返回错误代码 未登录用户向服务器发送了下线消息,服务器应向客户端返回错误代码 协议消息格式有误时,应该通知消息
12、发送者 考虑到断网等问题,在线用户列表应该是定期刷新的 在所有用到socket读写的trycatch块的finnally子句中关闭socket 可使用更有效的技术框架(JSON、XML、Protobuf)来传递协议消息建议 设计远比编码重要 设计过程中要用文字记录记录设计思想,并写在实验报告中,包括功能设计、协议设计、界面设计、类设计、流程设计 程序是调试出来的,不是编出来的! 大学里不熬夜做不好课程设计!文件传输设计 文件发送的基本流程(Alice-Bob) Alice开启“文件发送线程”,向Bob发送“文件发送请求消息”,此消息由服务器转发给Bob “文件发送请求消息”中包含Alice的用户名,Bob的用户名,文件对应的File对象等信息 Bob收到“文件发送请求消息”后,开启“文件接收处理线程”,向Alice发送“文件发送响应消息”,此消息亦由服务器转发给Alice 如果Bob同意接收文件, 就向Alice发送同意接收文件的“文件发送响应消息”,并在用ServerSocket打开一个本机端口,并通过“文件发送响应
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国羽毛粉数据监测研究报告
- 2025至2030年中国硫酸新霉素可溶性粉数据监测研究报告
- 2025年中国装饰球市场调查研究报告
- 2025年中国乳珍无蔗糖营养麦片市场调查研究报告
- 二零二五年度出租车公司股权转让及运营风险控制协议3篇
- 2025年购房离婚协议书:房产分割与财产分配范本
- 二零二五年度足疗技师外出服务安全协议执行范本
- 二零二五年度跨境电商平台股权合作协议
- 二零二五年度运动健身短视频拍摄合作协议书
- 二零二五年度销售业绩目标调整劳动合同补充协议
- 2025年人教五四新版八年级物理上册阶段测试试卷含答案
- 不同茶叶的冲泡方法
- 光伏发电并网申办具体流程
- 建筑劳务专业分包合同范本(2025年)
- 企业融资报告特斯拉成功案例分享
- 五年(2020-2024)高考地理真题分类汇编(全国版)专题12区域发展解析版
- 《阻燃材料与技术》课件 第8讲 阻燃木质材料
- 低空经济的社会接受度与伦理问题分析
- GB/T 4732.1-2024压力容器分析设计第1部分:通用要求
- 河北省保定市竞秀区2023-2024学年七年级下学期期末生物学试题(解析版)
- 2024年江苏省劳动合同条例
评论
0/150
提交评论