65,189
社区成员




bool RecvData(ServerInfo &Server,char *Data, int Length)
{
USES_CONVERSION;
int RetVal=0,DataLength=0;
char *TmpData;
RStatu RecvStatu=Successed;
CString TmpInfo=L"",TmpInfo_=L"";
TmpInfo.Format(L"%d",Length);
DataLength=Length+TmpInfo.GetLength()+::SocketHead.GetLength()+::SocketHead_Tail.GetLength()+::SocketTail.GetLength();//数据包长度
TmpData=new char[DataLength];
ZeroMemory(TmpData,DataLength);
RetVal=::recv(Server.ClientSocket,TmpData,DataLength,0);
if(RetVal==SOCKET_ERROR)
{
closesocket(Server.ClientSocket);
WSACleanup();
MessageBox(::GetActiveWindow(),_T("接收客户端数据失败!客户端可能以离线"),_T("温馨提示"),MB_ICONERROR|MB_OK);
delete [] TmpData;
return false;
}
::UnPack(TmpData,Data,&RecvStatu);//解壳函数
delete [] TmpData;
if(RecvStatu==Successed)
{
TmpInfo=_T("I have already successfully received your information!");
TmpInfo_.Format(L"%d",TmpInfo.GetLength());
DataLength=TmpInfo.GetLength()+TmpInfo_.GetLength()+::SocketHead.GetLength()+::SocketHead_Tail.GetLength()+::SocketTail.GetLength();
TmpData=new char[DataLength];
ZeroMemory(TmpData,DataLength);
::Pack(W2A(TmpInfo),TmpData,TmpInfo.GetLength());//加壳函数
RetVal=::send(Server.ClientSocket,TmpData,DataLength,0);//发送确认信息
if(RetVal==SOCKET_ERROR)
{
closesocket(Server.ClientSocket);
WSACleanup();
MessageBox(::GetActiveWindow(),_T("向客户端发送数据失败!客户端可能以离线"),_T("温馨提示"),MB_ICONERROR|MB_OK);
delete [] TmpData;
return false;
}
delete [] TmpData;
}
return true;
}
”就行了,中间是你的代码。。
p = new int[4];
if(p != NULL)
{
·
·
}
else
{
printf("error on new!!");
return false;
}