当前位置: 代码迷 >> WinCE >> 回调函数中socket连接解决办法
  详细解决方案

回调函数中socket连接解决办法

热度:11   发布时间:2016-04-28 13:13:11.0
回调函数中socket连接
当socket中断,开启一个定时器去重连,用的定时器是timeSetEvent。在回调函数中先closesocket然后重新连接,问题是根据connect的返回值看是连接上了,但实际是没连接上。回调函数部分如下:
其中pthis的声明为:static CRemotTran *pthis;
C/C++ code
void CALLBACK CRemotTran::ReConTimerPro(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwtime){    //AfxMessageBox(_T("OnTimer"));    try    {        closesocket(pthis->m_sScoket);    }        catch (CException* e)    {        AfxMessageBox(_T("关闭socket失败"));    }        pthis->m_sScoket=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);   //socket初始化    if(pthis->m_sScoket==INVALID_SOCKET)        return;    if(connect(pthis->m_sScoket,(LPSOCKADDR)&pthis->m_adServer,sizeof(LPSOCKADDR)))        {                timeKillEvent(pthis->m_uiReConTimer);                                                    //关闭定时器                                                 pthis->m_bReConTimerFlag=false;            pthis->m_bSockConFlag=true;    }}


------解决方案--------------------
恩,了解了
  相关解决方案