VC 重用的SOCKET报1022,该怎么处理
VC 重用的SOCKET报1022
本段代码在本机测试时,并无问题,但放到外网就重用时就报1022,高手指点一下
------解决思路----------------------
cClientSKT有没有被重复AcceptEx,这个要检查清楚,什么都是正确的时候,一般AcceptEx产生的10022错误,都是由于同一个SOCKET被第2次AcceptEx了,要不然把你的完整代码贴出来看看。
BOOL bRet = m_wsaapi.AcceptEx(m_ListenSocket,cClientSKT,m_pOverLap->m_szBuf,0,sizeof(sockaddr_in)+16,sizeof(sockaddr_in)+16,&dwBytesRecv,&m_pOverLap->m_OLap);
if (!bRet)
{
lierr=WSAGetLastError();
if (lierr != WSA_IO_PENDING && lierr!=WSAECONNRESET)
{
PostRFreeMem(m_pOverLap);
lserrs.Format(_T("PostAccept: SOCKET重用投递失败,Socket:%d,errno:%d \r\n"),cClientSKT,lierr);
writelogs(lserrs);
return NULL;
}
}
本段代码在本机测试时,并无问题,但放到外网就重用时就报1022,高手指点一下
------解决思路----------------------
cClientSKT有没有被重复AcceptEx,这个要检查清楚,什么都是正确的时候,一般AcceptEx产生的10022错误,都是由于同一个SOCKET被第2次AcceptEx了,要不然把你的完整代码贴出来看看。