socket传输数据的数据尺寸问题?
//用户出牌
struct CMD_S_OutCard
{
WORD wCardType;
WORD wHuangShang;
BYTE bAllCardCount[GAME_PLAYER]; //扑克数目
BYTE bAllCardData[GAME_PLAYER][15]; //扑克列表
BYTE bCardCount; //出牌数目
WORD wCurrentUser; //当前玩家
WORD wOutCardUser; //出牌玩家
WORD wChaOrGouUser; //叉勾用户 BYTE bCardData[15]; //扑克列表
};
CMD_S_OutCard OutCard;//用户出牌
ZeroMemory(&OutCard, sizeof(OutCard));
OutCard.wCardType = 0;
OutCard.bCardCount=bCardCount;
OutCard.wOutCardUser=m_wCurrentUser;
OutCard.wCurrentUser=m_wCurrentUser;
OutCard.wHuangShang=m_wHuangShang;
CopyMemory(OutCard.bAllCardCount,m_bCardCount,sizeof(m_bCardCount));
CopyMemory(OutCard.bAllCardData,m_bHandCardData,sizeof(BYTE)*sizeof(m_bHandCardData));
CopyMemory(OutCard.bCardData,m_bTurnCardData,m_bTurnCardCount*sizeof(BYTE));
WORD wSendSize=sizeof(OutCard)-sizeof(OutCard.bCardData)+OutCard.bCardCount*sizeof(BYTE);
m_pITableFrame->SendTableData(INVALID_CHAIR,SUB_S_OUT_CARD,&OutCard,wSendSize);
m_pITableFrame->SendLookonData(INVALID_CHAIR,SUB_S_OUT_CARD,&OutCard,wSendSize);
接收的时候,
//变量定义
CMD_S_OutCard * pOutCard=(CMD_S_OutCard *)pBuffer;
WORD wHeadSize=sizeof(CMD_S_OutCard)-sizeof(pOutCard->bCardData);
//效验数据
ASSERT(wDataSize>=wHeadSize);
if (wDataSize<wHeadSize) return false;
ASSERT(wDataSize==(wHeadSize+pOutCard->bCardCount*sizeof(pOutCard->bCardData[0])));
if (wDataSize!=(wHeadSize+pOutCard->bCardCount*sizeof(pOutCard->bCardData[0]))) return false;
在没有上面结构体的红色变量是正确的,多加了一个变量就不能用了,请大家帮我看看错在哪里了?