CSocketCtrl是我继承了CSocet的类,用线程函数ReConnect来后台重试连接服务器。线程里面调用Connect函数时,系统报错。请问该怎么解决?谢谢!
BOOL CSocketCtrl::CreateClient() 
{
if (AfxSocketInit())
{
if (this->Create())
{
::AfxBeginThread(ReConnect, this);
}
}
return false;
}UINT ReConnect(LPVOID lpVoid)
{
CSocketCtrl* pSocket = (CSocketCtrl*)lpVoid;
while (!pSocket->Connect(pSocket->szIP, pSocket->sPort))
{
Sleep(1000);
}
return 1;
}

解决方案 »

  1.   

    要先调用 CloseUINT ReConnect(LPVOID lpVoid) 

    CSocketCtrl* pSocket = (CSocketCtrl*)lpVoid; 
    while (!pSocket->Connect(pSocket->szIP, pSocket->sPort)) 

    pSocket->Close();
    Sleep(1000); 

    return 1; 
      

  2.   

    报什么错?CSocketCtrl对象不会是被主线程释放了吧?
      

  3.   


    UINT ReConnect(LPVOID lpVoid) 

    CSocketCtrl* pSocket = (CSocketCtrl*)lpVoid; 
    assert(pSocket != NULL); // 断言只在debug版本生效
    if(!pSocket) 
    {
    return -1;
    }
    while (!pSocket->Connect(pSocket->szIP, pSocket->sPort)) 

    Sleep(1000); 

    return 1; 

      

  4.   

    加了pSocket->Close();还是报错,错误:Debug Assertion Failed!
    File: sockcore.cpp
    Line: 851