socket 10053,10054错误如何恢复

jiangfeng999 2009-07-17 10:16:53
我用重叠IO模型做了一个网页抓取的程序:用WSARecv方式异步响应服务器的http连接请求,可是接收了几个网页之后就会报出10053,10054这样的错误。发生这种错误时应该如何恢复呢?我现在用重新连接重新接收数据的方式

int AsyncWsaRecvData()
{
nRet = WSARecv(m_hSocket,&m_WsaBufHttpRecv,1,&dwBytesTransferred,&Flags,&m_Overlapped,NULL);
nErrorCode = WSAGetLastError();
if(nRet==SOCKET_ERROR && nErrorCode!=WSA_IO_PENDING)
{
if(nErrorCode==WSAECONNRESET)//10054错误,解决办法:重新连接后再重新请求
{
CatchSystemError(LOG_HTTP_RESPONSE_ERROR_ID,__FILE__,__LINE__,GetWin32ErrorInfo(nErrorCode),nErrorCode);
AsyncWsaRecvData();
}
else if(nErrorCode==WSAECONNABORTED)//10053错误.解决办法:重新连接后再重新请求
{
CatchSystemError(LOG_HTTP_RESPONSE_ERROR_ID,__FILE__,__LINE__,GetWin32ErrorInfo(nErrorCode),nErrorCode);
AsyncWsaRecvData();
}
else
{
CatchSystemError(LOG_HTTP_RESPONSE_ERROR_ID,__FILE__,__LINE__,GetWin32ErrorInfo(nErrorCode),nErrorCode);
return RETURN_EXIT;
}
}
return RETURN_OK;
}

这样的恢复机制可行不?
...全文
469 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhwei1985 2009-07-17
  • 打赏
  • 举报
回复
up
gotooker 2009-07-17
  • 打赏
  • 举报
回复
不行吧,WSAECONNRESET这种错误时连接已经断开,你是服务器,应该直接关闭连接,等待客户端再次连接,服务器怎么能重新连接客户端呢?
socoola 2009-07-17
  • 打赏
  • 举报
回复
WSAECONNABORTED和WSAECONNRESET表明连接已经关闭,不管如何无法再继续传送数据,只有重新连接,再次请求数据才能恢复HTTP应用,所以你的方法是可行的,而且目前应该就此方法而已

18,356

社区成员

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

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