VC 重用的SOCKET报1022

wxliangzyt 2015-11-02 08:06:27

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,高手指点一下
...全文
173 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xian_wwq 2015-11-13
  • 打赏
  • 举报
回复
引用 楼主 wxliangzyt 的回复:

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,高手指点一下
lz的socket重用是通过什么方式?DisconnectEx?
gnorth 2015-11-04
  • 打赏
  • 举报
回复
cClientSKT有没有被重复AcceptEx,这个要检查清楚,什么都是正确的时候,一般AcceptEx产生的10022错误,都是由于同一个SOCKET被第2次AcceptEx了,要不然把你的完整代码贴出来看看。

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧