数据解析部分
if(len+pTask->procPos+1>=pTask->procFrame.length+FRAME_HEAD_LEN)
{
curLen=pTask->procFrame.length+FRAME_HEAD_LEN-pTask->procPos;
procFlag=1;
}
之所以要判断大于,是为了处理异常情况,否则如果真的出现了procPos+1>frame.length+12的情况,就麻烦了,帧会一直接收下去,直到缓冲区溢出。
你要考虑这种情况,TCP包在路由传输过程会分片重组,也就是说一个完整的帧可能会被拆分成几个片段。