|
|
|
@ -53,6 +53,7 @@ void CClientMgr::DisConnectServer()
|
|
|
|
|
if (m_hSocket!=INVALID_SOCKET)
|
|
|
|
|
{
|
|
|
|
|
Close();
|
|
|
|
|
m_bOnline = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -322,6 +323,48 @@ void CClientMgr::OnConnect(int nErrorCode)
|
|
|
|
|
CSocket::OnConnect(nErrorCode);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL CClientMgr::Connect(LPCTSTR lpszHostAddress, UINT nHostPort)
|
|
|
|
|
{
|
|
|
|
|
SetTimeOut();
|
|
|
|
|
auto ret = CSocket::Connect(lpszHostAddress, nHostPort);
|
|
|
|
|
KillTimeOut();
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL CClientMgr::SetTimeOut(UINT uTimeOut)
|
|
|
|
|
{
|
|
|
|
|
LARGE_INTEGER llCnt;
|
|
|
|
|
::QueryPerformanceCounter(&llCnt);
|
|
|
|
|
m_llDtStart = llCnt.QuadPart;
|
|
|
|
|
m_uTimeOut = uTimeOut;
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL CClientMgr::KillTimeOut()
|
|
|
|
|
{
|
|
|
|
|
m_llDtStart = 0;//表明取消计时
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL CClientMgr::OnMessagePending()
|
|
|
|
|
{
|
|
|
|
|
if (m_llDtStart)
|
|
|
|
|
{
|
|
|
|
|
LARGE_INTEGER lldtEnd;
|
|
|
|
|
::QueryPerformanceCounter(&lldtEnd);
|
|
|
|
|
LARGE_INTEGER llFrq;
|
|
|
|
|
::QueryPerformanceFrequency(&llFrq);
|
|
|
|
|
double dbDealy = (double)(lldtEnd.QuadPart - m_llDtStart) * 1000 / llFrq.QuadPart;
|
|
|
|
|
if (dbDealy > m_uTimeOut)
|
|
|
|
|
{
|
|
|
|
|
CancelBlockingCall();//退出阻塞的函数
|
|
|
|
|
AfxMessageBox("网络超时!");
|
|
|
|
|
return FALSE; // No need for idle time processing.
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return CSocket::OnMessagePending();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CClientMgr::CheckServerDoneCmd()
|
|
|
|
|
{
|
|
|
|
|
int waitCnt = 0;
|
|
|
|
|