读书人

高分就解一段代码.解决方案

发布时间: 2012-02-09 18:22:27 作者: rapoo

高分就解一段代码.
BYTE TempBuffer[MAXBUFFERSIZE];
#define MAXBUFFERSIZE 512
WORD PacketSize=0;
WORD BufferCount=0;
WORD BufferIndex=0;
#define MAXPACKETSIZE 8192

if(0xFFFFFFFF==*(DWORD*)TempBuffer)//0xFFFFFFFF是多少,这个判断什么意思
{
PacketSize=*(WORD*)(TempBuffer+4);//这里返回的是什么?
BufferCount=(PacketSize+8+MAXBUFFERSIZE-1)/MAXBUFFERSIZE;//同上
BufferIndex=0;
if(PacketSize> MAXPACKETSIZE-8)//这个判断呢?
{
BufferCount=0;
}
}//?

//--------------------------


[解决办法]
你的所有问题都是一个协议的问题,这个协议是作者自定义的,所谓乌龟的屁股——规定,没有原因,协议是这样规定的,具体如下:

if(0xFFFFFFFF==*(DWORD*)TempBuffer)//0xFFFFFFFF是多少,这个判断什么意思
这行可以看出,数据的开发必须是0xFFFFFFFF(4字节都为0xff,也就是32位全是1)才认为是一个合法的数据包。

PacketSize=*(WORD*)(TempBuffer+4);//这里返回的是什么?
这行可以看出,第五和第六字节为整个包的包长。

至于后面,你自己对照协议看看,好像是buff是MAXBUFFERSIZE长度为一组。

至于最后一个判断,无非是协议的完整性判断了。

读书人网 >VC/MFC

热点推荐