聊天程序項目分析.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
聊天程序項目分析

聊天程序项目分析 项目功能 程序实现用户间的互相通讯功能,暂不考虑聊天记录保存功能。 客户端主要功能 登陆: 用户输入账号密码,与保存在服务器上的数据进行比对验证登陆。 在线用户列表: 主窗体列举在线用户头像、姓名,暂不考虑支持头像上传,使用系统默认头像。 主动发送消息: 双击头像弹出独立聊天窗口,通过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);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(); 客户端的在线用户显示 动态删添在线用户头像与名字,且两者保持相对位置;各在线用户控件间不重合且保持相对位置;图片的显示。 客户端的聊天窗口控制 接收到消息后判断来源用户对应聊天窗口是否开启,若开启则直接添加消息至消息显示控件,否则新建聊天窗口并将消息添加。 对在线列表的操作 在线列表的设计、读写,

文档评论(0)

fv45ffsjjI + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档