近来遇到一个奇怪的问题
利用casyncsocket派生出新类,在该类的OnReceive中 使用ReceiveFrom接收数据
目前,是本机的一个端口,同时接收来自2台计算机的2种不同类型不同长度的数据,数据均以25ms为周期发送
时而好,时而运行一段时间,不再接收数据,不再触发OnReceive运行,但是也未进入ReceiveFrom返回值为SOCKET_ERROR的分支中。相当困惑,请高手帮忙,OnReceive代码如下,谢谢:
void CUDPSocket::OnReceive(int nErrorCode)
{
char m_pBuf[BUFFERSIZE];
memset(m_pBuf,0,BUFFERSIZE;
CString sIpAddress
UINT unPort; int nLen=ReceiveFrom(m_pBuf,BUFFERSIZE,sIpAddress,unPort);
int nIP=0;
nIP=atoi(sIpAddress.Right(2)); if(nLen==SOCKET_ERROR)
{
AfxMessageBox("接收数据出现错误!");
return;
}
GetSockName(sIpAddress,unPort);
m_pDoc->ProcessingNetData(m_pBuf,unPort,nIP);
CAsyncSocket::OnReceive(nErrorCode);
}