QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2751|回复: 7

请yunfan解惑,接收的消息类型

[复制链接]
发表于 2006-8-30 09:29:13 | 显示全部楼层 |阅读模式
我大概看了一下EvaPacketManager::processReceiveIM()这个函数
有几个地方不明白,在switch里面
case QQ_RECV_IM_TO_BUDDY:是来自好友的消息,这里为什么没有操作
另外还有几个case也没有操作,比如
case QQ_RECV_IM_CREATE_QUN:
case QQ_RECV_IM_ADDED_TO_QUN:
case QQ_RECV_IM_DELETED_FROM_QUN:
case QQ_RECV_IM_REQUEST_JOIN_QUN:
case QQ_RECV_IM_APPROVE_JOIN_QUN:
是没有完成还是不需要反应,这些case是指的哪些情况。
发表于 2006-8-30 10:34:21 | 显示全部楼层

Re: 请yunfan解惑,接收的消息类型

[quote:854564bdad="antipro"]我大概看了一下EvaPacketManager::processReceiveIM()这个函数
有几个地方不明白,在switch里面
case QQ_RECV_IM_TO_BUDDY:是来自好友的消息,这里为什么没有操作
另外还有几个case也没有操作,比如
case QQ_RECV_IM_CREATE_QUN:
case QQ_RECV_IM_ADDED_TO_QUN:
case QQ_RECV_IM_DELETED_FROM_QUN:
case QQ_RECV_IM_REQUEST_JOIN_QUN:
case QQ_RECV_IM_APPROVE_JOIN_QUN:
是没有完成还是不需要反应,这些case是指的哪些情况。[/quote]

, 你看看这个
[code:1]
switch(A){
case 1:
    process1();
    break;
case 2:   
    process2();
    break;
default:
}
[/code:1]

[code:1]
switch(A){
case 1:
case 2:
    process12();
    break;
default:
}
[/code:1]
有什么区别。
回复

使用道具 举报

 楼主| 发表于 2006-8-30 10:50:36 | 显示全部楼层
哦,我明白了,是我疏忽了,没有 break下面的过程也会被执行,谢谢yunfan。
回复

使用道具 举报

 楼主| 发表于 2006-8-30 11:00:07 | 显示全部楼层
还有一个登录令牌的问题,最新版的eva
void EvaMain::slotConnectReady( )
{
  packetManager->doLogin();
}
也就是直接登录了,你在介绍libeva登录方法的时候,过程是
EvaPacketManager::doRequestLoginToken()
得到返回后再
EvaPacketManager::processRequestLoginTokenReply()
最后才是
EvaPacketManager::doLogin()

你又说只在3.0pre里才行,我是这么理解的,后面的版本已经不需要登录令牌了,是协议变动了么?我没找到这个步骤。
回复

使用道具 举报

 楼主| 发表于 2006-8-30 11:15:28 | 显示全部楼层
我写的eva工作过程,图的次序放错了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2006-8-30 11:49:35 | 显示全部楼层
不是的, 登录令牌是需要的, 但是只用获取一次。

如果登录是中转的情况, 那么直接登录就可以了, 不用再次获取登录令牌。
回复

使用道具 举报

 楼主| 发表于 2006-8-30 12:59:19 | 显示全部楼层
谢谢,我找到这个步骤了。
void EvaPacketManager::doLogin()
{
  if(! Packet::isLoginTokenSet())  //这就是要求登录令牌吧
  {
    doRequestLoginToken();
    return;
  }
  unsigned char mode = QQ_LOGIN_MODE_INVISIBLE;
  if(user->getStatus() == EvaUser::Eva_Online)
    mode = QQ_LOGIN_MODE_NORMAL;
  Packet::setPasswordKey((unsigned char *)(user->getMd5Password()));
  connecter->append(new LoginPacket(mode));
}
回复

使用道具 举报

发表于 2006-8-30 13:15:03 | 显示全部楼层
恩, 对的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 00:27 , Processed in 0.039208 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表