关于ModbusTCP编程,该怎么处理

关于ModbusTCP编程
int reg_num=(9+2*(sendBuf[10]*256+sendBuf[11]));

int iSend=s.Send(sendBuf,12,0);
if(iSend==SOCKET_ERROR)
{
AfxMessageBox("发送数据失败!");
s.Close ();
return 1;
}

BYTE Recv[260];
int iRecv=s.Receive (Recv,260,0
  if(iRecv<9)
{
if(iRecv==0)
{
AfxMessageBox("意外的关闭远端的连接!");
}
else
{
  AfxMessageBox("响应帧太短!");
}
}
else//不清楚?????
{
BYTE a=Recv[7]&0x80;
  if(a!=0)
{
  AfxMessageBox("Modbus意外响应不正确!");
}
else 
{
if(iRecv!=reg_num)
{
AfxMessageBox("不正确的响应大小!");
}
else//接受数据的处理????
{
}
}
}
关于通讯还有一些不清楚的,哪位高手能帮忙解释下else语句中几个判断是什么意思?谢啦

------解决方案--------------------

C/C++ code

else//不清楚?????  返回报文字节数要大于9
{
BYTE a=Recv[7]&0x80;
  if(a!=0)
{
  AfxMessageBox("Modbus意外响应不正确!");
}
else 
{
if(iRecv!=reg_num)
{
AfxMessageBox("不正确的响应大小!");
}
else//接受数据的处理????              处理数据
{
}
}