- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Chartroom开发步骤for2010(1周)
1 系统介绍
简易的多人聊天软件,支持任意两个客户端的私聊,所有客户之间的群聊,只需启动一个服务器端程序,允许多人上线聊天。客户端使用用户名(昵称)登录,服务器端验证此昵称当前未使用准予登陆,否则其拒绝上线。运行效果如下:
(1) 在一台计算机上启动服务器端程序,如下图,下拉框中是当前所有登录的用户名。
(2)用户登录,在不同的电脑上运行客户端程序(开发时可以在同一台机器上运行)
(3) 聊天界面,右下的下拉框选择聊天对象,可以是任意在线用户,也可以是所有人。
(4)服务器端的界面可以显示,用户的上线、下线情况,所有用户的聊天记录
2实现原理和消息格式
(1)登陆消息格式:
客户端发送:”login” + 用户名
服务器端发送: “success”(表示成功)
“fail”(表示失败)
(2) 聊天消息格式:
私聊时,客户端发送:”聊天信息”+对方用户名+信息正文
群聊时,客户端发送:”聊天信息”+“所有人“+信息正文
服务端收到后转发:
私聊,转发给指定人:”聊天信息”+ 发送方用户名 + 时间 + 信息正文
群聊,转发给在线的所有人:”聊天信息”+发送方用户名+”群发” + 时间+信息正文
(3)下线信息格式
客户端发送:“用户下线“
(4)用户列表消息(一个用户登陆成功后,服务器端向所有用户发送最目前的所有在线用户列表,有用户下线,服务器端也要向客户端发送最新的用户列表)
格式: “用户列表“ + 用户名数组
3 任务1——搭建系统界面
3.1 目标
3.1.1 服务器端窗口
运行IMServerFrame类,出现服务器端界面窗口。
3.1.2 登陆窗口和客户端聊天窗口
运行UserLogin类,输入昵称,点击“登陆“ ,直接进入客户端聊天界面。(用户名验证工作留待后面完善)。
3.2 步骤
3.2.1 创建工程,名称为chartroom代码组织
在工程目录下创建client,包中存放跟客户端聊天相关的类 创建登陆界面UserLogin在下创建登陆窗口类UserLogin,登陆界面如图所示:
3.2.4 创建客户聊天界面IMPanelClient类
在client包下窗口IMPanelClient类(JFrame),界面布局和控件名称如下:
3.2.5 在UserLogin的“登陆“按钮事件中添加代码
代码如下:
dispose();// 关闭登陆对话框
IMPanelClient client = new IMPanelClient();
client.setVisible(true);//打开客户端聊天窗口
3.2.6 测试登陆功能
运行UserLogin类,输入昵称,点击“登陆”,查看客户端界面IMPanelClient是否正确显示。
3.2.7 创建服务器端界面
在server包中创建IMServerFrame 类(JFrame),如下图所示:
4 任务2——用户登陆验证和用户下线
4.1 登陆的实现思路
用户a登陆时,服务器端查询当前用户列表,如果a已经在列表中,则不允许a登陆,如果a不在列表中,允许登陆,并把a加入当前用户列表。
4.2 用户下线的思路
用户关闭客户端窗口时,向服务器端发送“用户下线”消息,服务器端将此用户名从当前用户列表中删除。
4.3 目标
(1)启动服务器端程序IMServerFrame,点击“启动服务UserLogin,输入一个用户名(首次使用),点击登陆,应允许登陆,看到聊天界面。服务器端显示***上线了,在线用户列表中应能显示此用户名。
(3) 运行登陆程序UserLogin,再输入一个当前正被使用的用户名(重复上一个用户名即可),点击登陆,应不允许登陆,提示此昵称已被使用了,请换一个。
(4)用户关闭客户端窗口,服务器端显示***下线了,在线用户列表中删除此用户名。
(5)登陆成功后,服务器界面显示用户登录信息,下拉框中显示当前所有在线用户。如图:
4.4 步骤
4.4.1 创建用户信息类SingleUserMegData
在server包下创建SingleUserMegData类,此类用来描述单个用户的信息,包括:用户名,套接字, 输入流输出流等。服务端每次接受一个用户成功登陆,便会为这个用户创建一个SingleUserMegData对象,其中存储该用户的信息。并把所有用户的SingleUserMegData对象组成一个列表,作为查询的依据。
类包括下面5个成员变量,以及它们的get和set方法,用于存取这些变量:
4.4.2 服务器端启动监听
您可能关注的文档
- 2012年9月份考试建筑经济与企业管理第三次作业doc.doc
- 2012年中级汽车维修工考试试题.doc
- 2012届高考地理二轮复习专题03岩石圈与地表形态.doc
- 2012年五年级走美杯试题(带答案)doc.docx
- 2012年4月各区高三一模生物试卷及答案.doc
- 2012年四月份发电工考试题.doc
- 2012年岳阳开发区七校(九年级第一次模拟考试)联考语文试题.doc
- 2012年初中物理透镜难题易错题集(附详解).doc
- 2012年建设工程安全生产技术试题.doc
- 2012届高三一轮复习测试试题33超重与失重瞬时问题.doc
- DG_TJ08-2302-2019:埋地钢质燃气管道杂散电流干扰评定与防护标准.pdf
- DG_TJ08-56-2019:建筑幕墙工程技术标准.pdf
- DG_TJ08-2304-2019:高层建筑整体钢平台模架体系技术标准.pdf
- DG_TJ08-2288-2019:房屋修缮工程术语标准.pdf
- DG_TJ08-59-2019:钢锭铣削型钢纤维混凝土应用技术标准.pdf
- S7-1200 PLC编程及应用技术 课件 6-4.PID参数的整定介绍.pptx
- S7-1200 PLC编程及应用技术 课件 6-7. S7-1200 PLC运动控制的指令解读.pptx
- S7-1200 PLC编程及应用技术 课件 7-7.S7-1200 PLC的Modbus通信基础.pptx
- 海南省基层医疗卫生机构工作情况数据专题报告2018版.pdf
- 浙江省舟山市水产品消费价格指数和蛋类消费价格指数情况数据专题报告2019版.pdf
文档评论(0)