CSocket ReceiveFrom奇怪错误,大家看看

时间:2021-08-02 23:54:55
采用UDP通讯

//--------.h文件 -------
CSocket m_SendSock;

//--------.cpp文件-------
//初始化函数:
BOOL CCommUdp::InitPowerComm()
{
if(!AfxSocketInit())
return FALSE;

//创建本地套接口
if(!m_SendSock.Create(theApp.m_MgrComm->m_PowerInfo.m_LocalPortNo, SOCK_DGRAM, NULL))//绑定本地套接口
{
return FALSE;
}

CString ipstr = IpAddrToStr(theApp.m_MgrComm->m_PowerInfo.m_LocalIpAddr);
if(m_SendSock.Bind(theApp.m_MgrComm->m_PowerInfo.m_LocalPortNo, ipstr))
{
return FALSE;
}

int szBuf = 1024;
m_SendSock.SetSockOpt(SO_RCVBUF,&szBuf,sizeof(szBuf));//设置缓冲区大小

return TRUE;
}
//接收函数
int CCommUdp::Read(BYTE * pBuf, int max)
{
CString ipstr = IpAddrToStr(theApp.m_MgrComm->m_PowerInfo.m_FarIpAddr);
int iRecv = m_SendSock.ReceiveFrom(pBuf, max, ipstr, theApp.m_MgrComm->m_PowerInfo.m_FarPortNo, 0);

return iRecv;
}
//发送函数
int CCommUdp::Write(BYTE * pBuf, int len)
{
CString ipstr = IpAddrToStr(theApp.m_MgrComm->m_PowerInfo.m_FarIpAddr);
int iSend = m_SendSock.SendTo(pBuf, len, theApp.m_MgrComm->m_PowerInfo.m_FarPortNo, ipstr, 0);
return iSend;
}

问题:当发送函数执行后,然后在接收函数中接收数据,如果对方没有回复数据,执行到ReceiveFrom就会报错:\mfc\sockcore.cpp line:947  如果对方有回复数据,则正常。很是奇怪折腾了好久也不知道是怎么回事,坐等高手解决!

1 个解决方案

#1


找到这个位置“\mfc\sockcore.cpp line:947 ”看看是什么错啊

#1


找到这个位置“\mfc\sockcore.cpp line:947 ”看看是什么错啊