vs2008下 数组通过强制转换后不能赋值给结构体
char szRecvBuf[MAX_BUF_SIZE] = {0};
int iRet = recv(MySock,szRecvBuf,MAX_BUF_SIZE,0);
if (iRet > 0)
{
LPIPHEADER pIPHeader = (LPIPHEADER)szRecvBuf;
pPackInfo->nProtocol = (USHORT)pIPHeader->bProtocol;
pPackInfo->nSourIp = pIPHeader->nSourIp;
pPackInfo->nDestIp = pIPHeader->nDestIp;
pPackInfo->nLength = iRet;
UINT nIPHeadLength = (pIPHeader->bVerAndHLen & 0x0F)* sizeof(UINT);
switch (pPackInfo->nProtocol)
{
case IPPROTO_TCP:
{
//LPTCPHEADER pTcpHeader = (LPTCPHEADER)new char[nIPHeadLength];
LPTCPHEADER pTcpHeader = (LPTCPHEADER)&szRecvBuf[nIPHeadLength];
pPackInfo->nSourPort = pTcpHeader->nSourPort;
pPackInfo->nDestPort = pTcpHeader->nDestPort;
pDlg->AddPack(pPackInfo);
}break;
case IPPROTO_UDP:
{
LPUDPHEADER pUDPHeader = (LPUDPHEADER)&szRecvBuf[nIPHeadLength];
pPackInfo->nSourPort = pUDPHeader->nSourPort;
pPackInfo->nDestPort = pUDPHeader->nDestPort;
pDlg->AddPack(pPackInfo);
}
break;
LPIPHEADER为自定义的结构体,编译到 LPTCPHEADER pTcpHeader = (LPTCPHEADER)&szRecvBuf[nIPHeadLength]; 这里时提示
错误 error C2440: “类型转换”: 无法从“char *”转换为“LPTCPHEADER”
请问如何能将数组szRecvBuf正确赋值给pTCpHeader结构体