- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
聊天程序项目分析.doc
聊天程序项目分析
项目功能
程序实现用户间的互相通讯功能,暂不考虑聊天记录保存功能。
客户端主要功能
登陆:
用户输入账号密码,与保存在服务器上的数据进行比对验证登陆。
在线用户列表:
主窗体列举在线用户头像、姓名,暂不考虑支持头像上传,使用系统默认头像。
主动发送消息:
双击头像弹出独立聊天窗口,通过2个文本框输入输出,按钮发送。
接收消息:
如果对方聊天窗口不存在,收到消息自动弹出聊天窗口;否则直接添加消息。
服务器主要功能
开始、停止服务
控制程序开始与停止网络服务。
接受登陆
收到客户端登陆指令,分析比较账号密码返回登陆状态。如果成功则将在线用户信息逐条发送给该用户,通知所有在线用户该用户登陆,并将该用户添加至在线列表。
接受注销登陆
收到客户端注销指令,在线列表中删除该用户,并通知所有在线用户该用户注销。
显示在线用户信息
使用ListView列出在线用户各个状态信息。
监视数据收发
显示服务器收发的每一条数据,包括目标和内容。
程序模块分析
客户端模块
登陆模块
构造数据并调用数据发送类,完成登陆或提示失败。
主面板用户列表模块
间隔一定时间通过比较在线用户列表,动态在主面板添加、删除头像与用户名控件。双击头像弹出对应聊天窗口。
聊天窗体模块
显示对方资料、聊天内容、发送聊天内容。
在线列表类
保存在线用户列表。
接收、发送数据类(客户端固定使用8001监听)
负责监听端口,接收数据交由处理接收数据类分析;向指定目标发送数据。
处理接收数据
负责处理收到的指令和相关数据,并根据指令做出相应处理。
服务器端模块
接受登陆模块
收到客户端登陆指令,分析比较账号密码返回登陆状态。如果成功则将在线用户信息逐条发送给该用户,通知所有在线用户该用户登陆,并将该用户添加至在线列表。
接受注销登陆
收到客户端注销指令,在线列表中删除该用户,并通知所有在线用户该用户注销。
显示在线用户信息模块
使用ListView列出在线用户各个状态信息。
监视数据收发模块
显示服务器收发的每一条数据,包括目标和内容。
接收、发送数据类(服务器固定使用8002监听)
负责监听端口,接收数据交由处理接收数据类分析;向指定目标发送数据。
处理接收数据类
负责处理收到的指令和相关数据,并根据指令做出相应处理。
处理发送数据类
负责封装需要发送的指令和相关数据。
技术难点分析
程序间网络通信
项目使用UDP方式通信,关键代码:
//发送数据UdpClient myUdpClient = new UdpClient();
IPAddress remoteIP = IPAddress.Parse(IP地址);
IPEndPoint iep = new IPEndPoint(remoteIP, 整型端口号);
byte[] bytes = System.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.WriteLine(string.Format(来自{0}:{1}, remote, str));
消息的封装
将命令与各数据字段使用特殊符号分隔封装,使用字符串类型的Split(分隔符) 方法返回字符串数组,再分别判断处理。关键代码:
String[] myString;
string a = 123,abc;
myString = a.Split(‘,’);
Console.WriteLine(myString[0]);
Console.WriteLine(myString[1]);
多线程编程
使用多线程分别处理接收发送以及使用委托对控件进行操作。以及在线程中计时,并做出相应操作。关键代码:
//创建一个线程并启动
Thread myThread = new Thread(new ThreadStart(方法名));
myThread.Start();
客户端的在线用户显示
动态删添在线用户头像与名字,且两者保持相对位置;各在线用户控件间不重合且保持相对位置;图片的显示。
客户端的聊天窗口控制
接收到
您可能关注的文档
- 经济效果评价方法多方案比选.ppt
- 经济法学的研究对象和学科地位.ppt
- 经济计量学讲义(经济计量学的特征及研究范围)_.ppt
- 经济运行分析报告撰写.ppt
- 经济重心的南移和民族关系的发展单元测试.doc
- 结构功能函数.doc
- 结构动力学复习重点整理笔记.doc
- 结构动力计算自测.doc
- 结构图中的常见问题.doc
- 结构强度、安全评定与失效分析研究.doc
- 佛山市三水物资集团有限公司2025年公开招聘集团本部及下属企业管理人员等人员备考题库及答案详解1套.docx
- 佛山市南海区人民医院2026年度合同制专业技术人员(第一批)招聘备考题库及一套答案详解.docx
- 佛山市三水物资集团有限公司2025年公开招聘集团本部及下属企业管理人员等人员备考题库及完整答案详解1.docx
- 佛山市三水物资集团有限公司2025年公开招聘集团本部及下属企业管理人员等人员备考题库及参考答案详解一.docx
- 佛山市三水物资集团有限公司2025年公开招聘集团本部及下属企业管理人员等人员备考题库含答案详解.docx
- 佛山市三水物资集团有限公司2025年公开招聘集团本部及下属企业管理人员等人员备考题库及参考答案详解1.docx
- 佛山市三水物资集团有限公司2025年公开招聘集团本部及下属企业管理人员等人员备考题库及1套完整答案详.docx
- 佛山市三水物资集团有限公司2025年公开招聘集团本部及下属企业管理人员等人员备考题库参考答案详解.docx
- 佛山市三水物资集团有限公司2025年公开招聘集团本部及下属企业管理人员等人员备考题库及一套参考答案详.docx
- 佛山市三水区总工会关于2025年公开招聘工会社会工作者的备考题库附答案详解.docx
原创力文档


文档评论(0)