|
发表于 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位的朋友把屏幕显示内容贴出来啊。 |
|