聊天程序项目分析

上传人:新** 文档编号:465163978 上传时间:2023-06-25 格式:DOC 页数:6 大小:56.01KB
返回 下载 相关 举报
聊天程序项目分析_第1页
第1页 / 共6页
聊天程序项目分析_第2页
第2页 / 共6页
聊天程序项目分析_第3页
第3页 / 共6页
聊天程序项目分析_第4页
第4页 / 共6页
聊天程序项目分析_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《聊天程序项目分析》由会员分享,可在线阅读,更多相关《聊天程序项目分析(6页珍藏版)》请在金锄头文库上搜索。

1、聊天程序项目分析一、 项目功能程序实现用户间的互相通讯功能,暂不考虑聊天记录保存功能。 客户端主要功能1. 登陆:用户输入账号密码,与保存在服务器上的数据进行比对验证登陆。2. 在线用户列表:主窗体列举在线用户头像、姓名,暂不考虑支持头像上传,使用系统默认头像。3. 主动发送消息:双击头像弹出独立聊天窗口,通过2个文本框输入输出,按钮发送。4. 接收消息:如果对方聊天窗口不存在,收到消息自动弹出聊天窗口;否则直接添加消息。 服务器主要功能1. 开始、停止服务控制程序开始与停止网络服务。2. 接受登陆收到客户端登陆指令,分析比较账号密码返回登陆状态。如果成功则将在线用户信息逐条发送给该用户,通知

2、所有在线用户该用户登陆,并将该用户添加至在线列表。3. 接受注销登陆收到客户端注销指令,在线列表中删除该用户,并通知所有在线用户该用户注销。4. 显示在线用户信息使用ListView列出在线用户各个状态信息。5. 监视数据收发显示服务器收发的每一条数据,包括目标和内容。二、 程序模块分析 客户端模块1. 登陆模块构造数据并调用数据发送类,完成登陆或提示失败。2. 主面板用户列表模块间隔一定时间通过比较在线用户列表,动态在主面板添加、删除头像与用户名控件。双击头像弹出对应聊天窗口。3. 聊天窗体模块显示对方资料、聊天内容、发送聊天内容。4. 在线列表类保存在线用户列表。5. 接收、发送数据类(客

3、户端固定使用8001监听)负责监听端口,接收数据交由处理接收数据类分析;向指定目标发送数据。6. 处理接收数据负责处理收到的指令和相关数据,并根据指令做出相应处理。 服务器端模块1. 接受登陆模块收到客户端登陆指令,分析比较账号密码返回登陆状态。如果成功则将在线用户信息逐条发送给该用户,通知所有在线用户该用户登陆,并将该用户添加至在线列表。2. 接受注销登陆收到客户端注销指令,在线列表中删除该用户,并通知所有在线用户该用户注销。3. 显示在线用户信息模块使用ListView列出在线用户各个状态信息。4. 监视数据收发模块显示服务器收发的每一条数据,包括目标和内容。5. 接收、发送数据类(服务器

4、固定使用8002监听)负责监听端口,接收数据交由处理接收数据类分析;向指定目标发送数据。6. 处理接收数据类负责处理收到的指令和相关数据,并根据指令做出相应处理。7. 处理发送数据类负责封装需要发送的指令和相关数据。三、 技术难点分析1. 程序间网络通信项目使用UDP方式通信,关键代码:/发送数据UdpClient myUdpClient = new UdpClient();IPAddress remoteIP = IPAddress.Parse(IP地址);IPEndPoint iep = new IPEndPoint(remoteIP, 整型端口号);byte bytes = System

5、.Text.Encoding.UTF8.GetBytes(消息内容);myUdpClient.send(bytes, bytes.Length, iep);/在本机指定的端口接收数据 UdpClient udpClient = new UdpClient(整型端口号); IPEndPoint remote = null; /接收从远程主机发送过来的信息 byte bytes = udpClient.Receive(ref remote); string str = Encoding.UTF8.GetString(bytes, 0, bytes.Length); Console.WriteLin

6、e(string.Format(来自0:1, remote, str);2. 消息的封装将命令与各数据字段使用特殊符号分隔封装,使用字符串类型的Split(分隔符) 方法返回字符串数组,再分别判断处理。关键代码: String myString; string a = 123,abc; myString = a.Split(,); Console.WriteLine(myString0); Console.WriteLine(myString1);3. 多线程编程使用多线程分别处理接收发送以及使用委托对控件进行操作。以及在线程中计时,并做出相应操作。关键代码:/创建一个线程并启动Thread

7、myThread = new Thread(new ThreadStart(方法名);myThread.Start();4. 客户端的在线用户显示动态删添在线用户头像与名字,且两者保持相对位置;各在线用户控件间不重合且保持相对位置;图片的显示。5. 客户端的聊天窗口控制接收到消息后判断来源用户对应聊天窗口是否开启,若开启则直接添加消息至消息显示控件,否则新建聊天窗口并将消息添加。6. 对在线列表的操作在线列表的设计、读写,以及将在线列表与已显示的用户作对比。四、 项目进度安排第9周第10周第11周第12周1. 确定程序间交换的数据格式2. 编写封装数据类3. 接收、发送数据类4. 在线列表类1

8、. 登陆模块2. 处理接收数据类的登陆部分3. 处理发送数据类的登陆部分1. 客户端主面板相关操作(用户头像添加删除及响应事件)2. 聊天窗口模块3. 实现客户端间通信功能4. 进一步完善数据处理类1. 服务器响应模块2. 服务器监视数据收发模块3. 程序测试整合附:程序通讯规则模型图=服务器=登陆成功通知:success + 姓名 + 性别登陆失败通知(密码错误):fail 添加用户:add + QQ号码 + 名称 + 性别 + IP删除用户:del + QQ号码状态确认(暂未处理):status =客户端=登陆请求:login + 账号 + 密码注销请求:exit + 帐号消息:messa

9、ge + QQ号码 + 消息内容状态确认(暂未处理):status 查询用户信息(暂未处理):ask + QQ号码通讯指令规则注销指令(exit +用户号码 )添加在线用户指令(add)、用户资料客户机查询未知用户消息ask、号码在线确认指令status消息指令(message)、用户号、消息内容添加在线用户指令(add)、用户(号码、名称、性别、IP)登陆指令(login)、用户号、密码等登陆状态信号(success,fail)服务器循环触发程序通讯规则模型服务器客户机客户机登陆过程发送消息过程添加在线用户指令、在线列表(号码、名称、性别、IP)客户机事件触发删除注销用户指令(del)、用户号码客户机程序退出过程

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号