首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

2012-02-09 
高分就解一段代码.BYTETempBuffer[MAXBUFFERSIZE]#defineMAXBUFFERSIZE512WORDPacketSize0WORDBufferCo

高分就解一段代码.
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长度为一组。

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

热点排行