QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4723|回复: 30

Eva-3.2.0在64位系统下还是不能登录

[复制链接]
发表于 2005-10-10 05:05:40 | 显示全部楼层 |阅读模式
新装的Mandriva 2006 x86_64版本还是有网络问题,仍然不能登陆。

UDP登录:
[code:1]Got server :61.144.238.155
EvaUHProfile::loadProfile -- file not exists
password key set!
packet exception: (cmd)0x  62
packet exception -- commend code: 0x  62
OutPacket->encryptBody: sessionkey not set yet, set encrypted length to 0
OutPacket->encryptBody: sessionkey not set yet, set encrypted length to 0
OutPacket->encryptBody: sessionkey not set yet, set encrypted length to 0
OutPacket->encryptBody: sessionkey not set yet, set encrypted length to 0[/code:1]

TCP登录:
[code:1]Got server :219.133.38.230
EvaUHProfile::loadProfile -- file not exists
connecting to "219.133.38.230"
password key set!
got login token
login token set!
password key set!
packet exception: (cmd)0x  22
packet exception -- commend code: 0x  22
OutPacket->encryptBody: sessionkey not set yet, set encrypted length to 0
OutPacket->encryptBody: sessionkey not set yet, set encrypted length to 0
OutPacket->encryptBody: sessionkey not set yet, set encrypted length to 0
OutPacket->encryptBody: sessionkey not set yet, set encrypted length to 0
[/code:1]
 楼主| 发表于 2005-10-10 05:09:24 | 显示全部楼层
包是在Mandriva cooker里找的打过补丁的包。
回复

使用道具 举报

发表于 2005-11-2 10:49:55 | 显示全部楼层
看来咱们是一个问题,是不是eva还没有为64位准备好?
回复

使用道具 举报

发表于 2005-11-2 14:12:31 | 显示全部楼层
你可以试试安装32位的eva,从技术上来说,32位软件可以在64位系统上运行。
回复

使用道具 举报

发表于 2005-11-3 10:54:17 | 显示全部楼层
用源码编译的eva,还是这样。
只能让yunfan做个说明了
回复

使用道具 举报

发表于 2005-11-3 12:39:17 | 显示全部楼层
64位还真是有问题啊。
唉, 如果有个64位的机器, 一测便知。  找不到这样的机器啊。
:neutral:
回复

使用道具 举报

发表于 2005-11-3 16:23:23 | 显示全部楼层
你可以把测试步骤告诉大家啊。
回复

使用道具 举报

发表于 2005-11-3 19:21:16 | 显示全部楼层
主要是看看发送的包是否正确, 是不是64位的int, short什么的变了size, 我猜测的。
打印出发送的数据, 和自己的qq号什么的数据一对就大概知道原因了。

首先测试一下这个程序,看看显示的结果是什么:
[code:1]
// sizetest.c
#include <stdio.h>
#include <arpa/inet.h>

int main(int argc, char**argv)
{
        int i;
        unsigned int test = 0x12345678;

        printf("char size : %d\n", sizeof(char));
        printf("short size: %d\n", sizeof(short));
        printf("int size  : %d\n", sizeof(int));
        printf("long size : %d\n", sizeof(long));
       
        printf("test in original  : 0x%8x\n", test);
        printf("test in memory    : ");
        for(i=0; i<sizeof(unsigned int); i++){
                char t = ((char *)(&test))[i];
                printf("%2x", t);
        }
        printf("\n");
        printf("htonl(test)       : 0x%8x\n", htonl(test));
        printf("ntohl(htonl(test)): 0x%8x\n", ntohl(htonl(test)));
}

[/code:1]
随便打开一个编辑器(gedit, kedit, vim....),把上面的代码粘贴上去, 存盘退出.
命令行输入: gcc -o sizetest sizetest.c
然后: ./sizetest  回车
先看一下64位的情况, 希望64位的朋友把屏幕显示内容贴出来啊。
回复

使用道具 举报

发表于 2005-11-7 08:40:14 | 显示全部楼层
int 32bit
long 64bit
回复

使用道具 举报

发表于 2005-11-8 10:29:13 | 显示全部楼层
是不是没变这样说?

64位的Linux使用LP64模型,long 和 指针(void*) 类型均要占64bit,而int类型仍然保持在32bit???

也就是说给32位的代码中将long或指针类型直接赋给int类型是没问题的(都是32bit),到了64位就会引起数据截断溢出什么的?
回复

使用道具 举报

发表于 2005-11-8 10:45:39 | 显示全部楼层
long 变化了,至少我机器上long和int是一样长的,这个可能还和系统有关, 看怎么定义了

如果强行把64位的数赋值给32位, 也不一定溢出, 看是什么情况了,
在64位系统上, 如果
[code:1]
int i = 8; long j = 9;
i = j;
[/code:1]
我估计是没有事的, 编译器会自动转换, 会失去精度, 如果j的值大于0xffffffff, 那么赋值后, i肯定是不对的。

上面的情况和这个结果是一样的, 如果j太大, 结果也是不对的
[code:1]
int i = 8; long j = 9;
memcpy(&i, &j, 4);
[/code:1]


因为我是基于32位机器写的代码, 所以不会出现下面的情况
[code:1]
memcpy(&i, &j, 8);
[/code:1]
这个基本上,这个操作,  非常危险, 大多数情况下, 会导致crash。但是
i = j; 这样就难说了, 要看编译器编译的时候是不是自动做类型转换,
一般都会转的。
回复

使用道具 举报

发表于 2005-11-8 10:50:12 | 显示全部楼层
是不是有个icc什么的??有一个-Wp64编译参数来检测代码中的32bit到64bit的移植问题,而且有问题会给warning的??
回复

使用道具 举报

发表于 2005-11-8 10:53:09 | 显示全部楼层
icc 是intel的吧, 没用过
回复

使用道具 举报

发表于 2005-11-8 11:02:42 | 显示全部楼层
http://net.ytu.edu.cn/share/%C8%ED%BC%FE/%B1%E0%B3%CC/Intel%B5%C4C%B1%E0%D2%EB%C6%F7/

恩...上面有的下载,不过不知道编译其他C源代码要怎么做,好象也不是开源的...

我是不是拉远了    去学习...哈哈   
回复

使用道具 举报

发表于 2005-11-15 20:43:48 | 显示全部楼层
换上了 amd64 把这个问题顺带解决了,虽然我不用 QQ.;)
很简单。 sed -i 's,<\long\>,int,g' evacrypt.h evacrypt.cpp
不过最好把 unsigned long 换成 uint32.
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-2 06:40 , Processed in 0.056987 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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