代码如下:DWORD WINAPI CIOCPServer::ThreadConserPoolProc(LPVOID lpParam)
{
//连接主服务器的线程
CIOCPServer* pcs=(CIOCPServer*)lpParam;
WSADATA data = {0};
SOCKET m_Socket;
recvMsg msgg;

TCHAR szBuf[MAX_BUF_SIZE] = {0};
try
{
memset(msgg.sendtype,0,2);
memset(msgg.sendno,0,30);
memset(msgg.seda,0,100);
memset(msgg.sedb,0,100);
memset(msgg.sedc,0,100);
memset(msgg.sedd,0,100);
memset(msgg.sede,0,100);
memset(msgg.sedf,0,100);
memset(msgg.sedg,0,100);
memset(msgg.sedh,0,100);
memset(msgg.sedi,0,100);

if(WSAStartup(MAKEWORD(2, 2), &data))
return FALSE;
if ( LOBYTE(data.wVersion) !=2 || HIBYTE(data.wVersion) != 2 )
{
WSACleanup();
return FALSE;
}
m_Socket = socket(AF_INET , SOCK_STREAM , IPPROTO_TCP);
sockaddr_in server;
server.sin_family = AF_INET;
server.sin_port = htons(9527);
server.sin_addr.s_addr = inet_addr("127.0.0.1");
if (connect(m_Socket, (struct sockaddr *)&server,  sizeof(struct sockaddr)) == SOCKET_ERROR ) 
{
AfxMessageBox(_T("连接失败,请重试!"));
WSACleanup();
return FALSE;
}
pcs->skt=m_Socket;
memcpy(msgg.sendtype, "a", sizeof("a") );
//-----------------unicode下:CString转char[]的方法-------------------------------------
WideCharToMultiByte(CP_ACP,0,pcs->pcno,pcs->pcno.GetLength(),msgg.sendno,sizeof(msgg.sendno),NULL,NULL);
::send(pcs->skt,(char *)&msgg, sizeof(msgg),0);
while(TRUE) 
{
memset(szBuf,0,MAX_BUF_SIZE);
recvMsg msggrvd;
memset(msggrvd.sendtype,0,2);
memset(msggrvd.sendno,0,30);
memset(msggrvd.sendskt,0,10);
memset(msggrvd.seda,0,100);
memset(msggrvd.sedb,0,100);
memset(msggrvd.sedc,0,100);
memset(msggrvd.sedd,0,100);
memset(msggrvd.sede,0,100);
memset(msggrvd.sedf,0,100);
memset(msggrvd.sedg,0,100);
memset(msggrvd.sedh,0,100);
memset(msggrvd.sedi,0,100); int iRet = recv(m_Socket, (char *)szBuf, MAX_BUF_SIZE, 0);
if ( iRet > 0 ) 
{
memcpy(&msggrvd,szBuf,sizeof(szBuf));
CIcpwes *opw=new CIcpwes(pcs,msggrvd);
QueueUserWorkItem(WorkThreadPoolProc, opw, WT_EXECUTELONGFUNCTION);
}
else
{
// WSACleanup();
memset(szBuf,0,MAX_BUF_SIZE);
CString lstxt;
lstxt="服务器断开连接,请重新启动";
pcs->m_pWnd->SendMessage(WM_ADD_MSG,(DWORD)0,(LPARAM)(LPCTSTR)lstxt);
break;
}
} closesocket(m_Socket);
return TRUE;
}
catch(_com_error e)
{
CString errormessage;
errormessage.Format(_T("连接数据库失败!\r\n错误信息:%s"),e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
return TRUE;
}
}
服务端,客户端,都在BUG状态,我突然停掉服务端时,客户端会报以下错误:
1:有时报:Run-Time Check Failure #2 - Stack around variable 'szBuf' was corrupted
2:有时报:Run-Time Check Failure #2 - Stack around variable 'msggrvd' was corrupted请高手指点,始终找不到原因