SOCKET问题,真不知道该怎么办了!
sunht 2001-12-04 05:55:08 使用MFC工程,使用WINSOCK API,异步方式,在VIEW的消息处理过程中这样写
LRESULT CSvrView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
char recvbuf[100];
char sendbuf[100];
memset(recvbuf,0,sizeof(recvbuf));
int stat0,stat1;
switch(message)
{
case WM_SOCK:
{
switch(lParam)
{
case FD_READ:
stat0=recv(clientsock[0],tempbuf,sizeof(recvbuf),0);
if(stat0==SOCKET_ERROR)
{
Message("recv ERROR!");
}
else
Message("client[0] send %s",tempbuf);
WSAAsyncSelect(clientsock[0],this->m_hWnd,WM_SOCK,FD_WRITE|FD_CLOSE);
break;
case FD_WRITE:
break;
case FD_CLOSE:
closesocket(clientsock[0]);
Message("clientsock[0] closed");
break;
default:
break;
}
}
}
return CEditView::WindowProc(message, wParam, lParam);
}
然后做一个测试程序,拼命向这个程序发包,就发现如果发包过于频繁或者间隔时间比较短而包长度比较大,接受方就会出现内存异常,这个应该怎么解决呢?