网站地图| 免费获取|
毕业论文网
  • 网站首页|
  • 论文范文|
  • 论文降重|
  • 职称论文发表|
  • 合作期刊|
  • 论文下载|
  • 计算机论文|
  • 外文翻译|
  • 免费论文|
  • 论文资料|
  • 论文开题报告
搜索

当前位置:毕业论文网 -> 免费论文 -> 计算机论文 -> 免费vc++网上寻呼QICQ源代码(附带文档)(十五)
计算机论文资料| ASP设计| Delphi| VB设计| JSP设计| ASP.NET设计| VB.NET| java设计| VC| pb| VS| dreamweaver| c#.net| vf| VC++| 计算机论文范文| 论文下载| 自动化论文

免费vc++网上寻呼QICQ源代码(附带文档)(十五)

最新活动:微信集50个赞就可获取任意一篇钻石会员文档。详情见微信集赞换文档
免费vc++网上寻呼QICQ源代码(附带文档)(十五) VALIDATE:  需要身份验证
 这四个类型的信息,处理过程相同:1.
判断此用户ID和FriendId是否为合法用户,否就不处理
判断此接受方的用户是否在线(或隐身),是则发送此消息给此用户,否则存入offmsg表中

五.Case MULTI_SEND_MSG: 用户给多个好友发的离线消息
对每个接受方用户ID,执行以下两步操作
判断此用户ID和FriendId是否为合法用户,否就不处理
判断此接受方的用户是否在线(或隐身),是则发送此消息给此用户,否则存入offmsg表中

六.Case TEST_BROADCAST_PWD: 检查发广播的密码
    1.  判断此用户是否为合法用户,否则就不处理
 2.  判断是否是正确的密码,发回一个CMsg3类的一个反馈消息

七.Case SEND_BROADCAST: 发送的广播消息
判断此用户是否为合法用户,否则就不处理
判断密码是否正确,不正确则不进行处理
把这条广播消息插入到broadcast表中
对所有用户,执行以下操作:
如果在线,则发广播消息给用户,否则就存在offbroadcast表中
八.Case FRIEND_DETAIL: 用户请求查看某人详细信息
判断此用户ID和FriendId是否为合法用户,否就不处理
从Users表中查出此FriendId的用户的详细信息
把此详细信息发送给请求用户

九.case ADD_AS_FRIEND: 用户要求把某人加为好友的请求
判断此用户ID和FriendId是否为合法用户,否就不处理
如果FriendId拒绝任何人加它或需要身份验证,则发回RE_ADD_AS_FRIEND响应,结束。
在Friends表中查,看此FriendId用户是否已经是ID用户的好友,是则返回相应错误信息,结束。
把这个好友信息插入Friends表中
发送成功加入消息
看被加入的人是否在线,是,则发送一个通知消息,否则把这条消息插入offmsg表中。
 
十.case  APPLY_SHOW_ONLINE: 查看在线的人的请求
判断此用户是否为合法用户,否则就不处理
按信息中的Value值,进行定位
如果超出范围,则不处理(Value错误)
把在指定位置开始的,在线的人不超过PersonNumEveryTime个人的信息,发送给用户

十一。case  FIND_FRIEND_BY_ID: 用ID号进行查找用户
判断此用户ID和FriendId是否为合法用户,否就不处理
在数据库表Users中查找此用户
如果找不到此用户则返回ID_NOT_FOUND_BY_ID消息,结束
如果找到了,则返回这个用户的详细信息(FOUND_FRIEND_ BY_ID)

十二、case  FIND_FRIEND_BY_NAME: 用姓名查找朋友
判断此用户是否为合法用户,否则就不处理
在m_pUsers数组中查找与此姓名相同的用户
如果没有找到,则返回一个NAME_NOT_FOUND_BY_NAME消息,结束
如果找到了,则把这此人的相关信息存入CshowOnlinePeople的一个实例中,并发送给请求的用户。
十三、case  DELETE_A_FRIEND:  删除一个好友
判断此用户ID和FriendId是否为合法用户,否就不处理
在Friends表中删除Friends.myid=msg.myid and Friends.friendid= msg.friendid的那项记录

十四、case DELETE_SELF_IN_FRIEND: 选择在某人的好友中删除自己
判断此用户ID和FriendId是否为合法用户,否就不处理
在Friends表中删除Friends.myid=msg.friendid and Friends.friendid=msg.myid 的那项记录

十五、case CHANGE_PERSONAL_INFO: 修改个人信息
判断此用户是否为合法用户,否则就不处理
按Mask的值来构造修改的SqL语句
执行修改操作

十六、case CHANGE_PASSWORD: 修改个人的密码
判断此用户是否为合法用户,否则就不处理
从Users中查出此用户的password
检验旧密码是否正确,否,则不处理,结束
正确则修改此用户的密码

十七、.Case  APPLY_ID_LOGIN: 申请一个新帐号
把当前用户的详细信息插入Users表中
更新相应数据结构中的数据(m_nMaxUserId,m_nNumberOnline,m_pUsers)
得到用户的ID号,发送给用户APPLY_ID_OK消息

十八、case HAVE_ID_LOGIN: 使用已有号码进行登陆
判断此用户是否为合法用户,否则就发送帐号不存在的消息,结束
判断用户发出的密码是否正确,否则就发送密码错误的消息。结束
密码正确,发送登陆成功消息

小结:

 以上这些处理过程,主要是一些数据库的访问和协调各客户端进行通讯,算法上面没有什么很难的地方,只是处理时,要仔细,因为很容易遗漏一些步骤,导致得不到正确的结果。
 
 有一点,我在上述的处理过程都没有提到,就是在响应用户请求过程中,如果发送数据失败,如何去处理。因为每个都需要去考虑,说起比较繁琐。我的处理原则是: 如果是发送离线消息之类的存于数据库中的数据,发送成功,才会删除相应项。如果发送不成功,将放弃用户请求,跳出Switch语句,结束线程。
 
 处理查看在线的人的时候,这个如何实现,倒难了我几天时间,假如在服务器端,如果不采用pUsers保存一部分的用户信息,那这一操作,将会较难实现,处理上也要复杂多了,访问数据库也要访问好多次。所以,就是因为要实现这个功能,为了能较快的响应用户的请求,所以我采用了这种数据结构,在启动服务器时,把所有用户的一部分信息读出放在内存里,当然,更新数据库数据时,这些在内存里的数据,也同时被更新了。从内存中取数据,可比访问数据快了好多好多。
 
 在处理查看在线用户的功能时,我看了”武汉硕思软件公司”的硕思即时通的服务器端的数据库,我看到,他把用户Online信息存放在用户详细信息的表里,我想,他这样做,也是为了使查看在线的人的功能容易实现吧。但我个人认为,Online是处理运行时刻的状态,不应该放在用户信息的表里,那样不符合数据库设计的原则。
 
 我在实现查看在线用户的”上页””下页”功能时,是让用户传来一个Value值,根据他传来的value值,我来确定在线的人的分布,比如说,用户刚打开查看在线时,Value值为0,这样,我就从服务器中取出所有在线的,把从开始的共K位用户的信息发回来,用户按了一个下页,这时Value为1,我就从服务器中取出所有在线的,取其第K+1到2K的这些在线的人,发回给用户。当然,前提是还存在这个范围的在线用户。
&nbs

首页 上一页 12 13 14 15 16 17 下一页 尾页 15/17/17

免费vc++网上寻呼QICQ源代码(附带文档)(十五)由毕业论文网(www.huoyuandh.com)会员上传。
原创论文资料流程 相关论文
上一篇:免费vc++医药管理系统+文档 下一篇:免费vc中国象棋软件
推荐论文 本专业最新论文
Tags:免费 网上 寻呼 QICQ 源代码 附带 文档 2010-04-02 16:32:55【返回顶部】
精彩推荐
发表论文

联系方式 | 论文说明 | 网站地图 | 免费获取 | 钻石会员 | 硕士论文资料


毕业论文网提供论文范文,论文代发,原创论文资料

本站部分文章来自网友投稿上传,如发现侵犯了您的版权,请联系指出,本站及时确认并删除  E-mail: 17304545@qq.com

Copyright@ 2009-2020 毕业论文网 版权所有