|
发表于 2004-2-19 00:42:51
|
显示全部楼层
有时侯收不到msg的状况我跟踪叻一下,发现是read_packet_data那个判断导致,那个判断本身没什么问题,gdb调试的结果发现问题出在这里:
qq_process_packet.c: 76行左右,
msg_len = strlen(cursor); // msg ends with 0x00
cursor现在指向的应该是msg本身,但是在我的系统上,不知道为什么,msg后面没有跟0x00,而是还有一些乱码。这样导致msg_len比我实际发送过来的msg长。
所以,我在后面加了个判断:
if (cursor + msg_len > data + len) {
msg_len = (unsigned int)(data + len) - (unsigned int)cursor;
}
另外,加了:
memset(msg, 0, sizeof(msg));
不知道我说清楚了问题没有:p
希望有所帮助,我的代码经过前面提到的qq_to_utf8和上面这个处理之后,稳定了好多,今天晚上特意上线跟朋友聊天测试,没崩过了,
谢谢大家 |
|