免费获取|
论文天下网
  • 论文天下网 |
  • 原创毕业论文 |
  • 论文范文 |
  • 论文下载 |
  • 计算机论文 |
  • 论文降重 |
  • 毕业论文 |
  • 外文翻译 |
  • 免费论文 |
  • 开题报告 |
  • 心得体会 |

当前位置:论文天下网 -> 免费论文 -> 计算机论文

免费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++医药管理系统+论文 下一篇:免费vc中国象棋软件
推荐论文 本专业最新论文
Tags:免费 网上 寻呼 QICQ 源代码 附带 论文 【返回顶部】

相关栏目

自动化相关
计算机论文
工程管理论文
法律论文
医学论文
人力资源
电子专业
电气工程
英语论文
行政管理
电子商务
社科文学
教育论文
物流专业
金融专业
财务管理
会计专业
化学化工材料科学
电子通信
环境科学
经济类
机械模具类
报告,总结,申请书
其他专业论文


关于我们 | 联系方式 | 论文说明 | 网站地图 | 免费获取 | 钻石会员 | 原创毕业论文

 

论文天下网提供论文检测,论文降重,论文范文,论文排版,网站永久域名WWW.GEPUW.NET

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

Copyright@ 2009-2022 GEPUW.NET 论文天下网 版权所有