void NFSClient::RefreshTask::Invoke() { NFSClient* pClient = (NFSClient*)GetData(); if (pClient == NULL) { return; } NFS_HEAD head; head.m_nMsgCode = CODE_TEST; char szBuf[4096+512] = {0};//4096表示buffer区,512表示包头 if (pClient->m_pServerModule->m_pServer->m_nAllfileInfoLen > 0) { pClient->SendCmd(CODE_REFRESH_BEGIN); } else { pClient->SendCmd(CODE_REFRESH_FAILED); return; } head.m_iType = NFS_HEAD_DATA; head.m_nIndex = 0; head.m_nMsgCode = CODE_REFRESH_DOING; int iLeft = (pClient->m_pServerModule->m_pServer->m_nAllfileInfoLen)%MAX_DATA_LEN; int iCout = (pClient->m_pServerModule->m_pServer->m_nAllfileInfoLen)/MAX_DATA_LEN; head.m_nCount = iCout + 1; cout<<"刷新的传输次数:"<<head.m_nCount<<endl; MSocket* pClientDataSocket = pClient->m_pServerModule->m_pServer->m_DataSocket.Accept(); for (int i = 0; i < iCout; ++i) { head.m_nLength = MAX_DATA_LEN; head.m_nIndex = i; head.SetBuffer(pClient->m_pServerModule->m_pServer->m_pszAllFileInfo + MAX_DATA_LEN*i,MAX_DATA_LEN); unsigned long len = head.GetStream(szBuf); unsigned int nResult = 0; pClientDataSocket->Send(szBuf,len); } head.m_nLength = iLeft; head.m_nIndex = iCout; head.SetBuffer(pClient->m_pServerModule->m_pServer->m_pszAllFileInfo + MAX_DATA_LEN*iCout,iLeft); unsigned long len = head.GetStream(szBuf); pClientDataSocket->Send(szBuf,len); head.m_nLength = 0; head.m_nIndex = 0; head.m_nMsgCode = CODE_REFRESH_SUCCESS_DONE; len = head.GetStream(szBuf); pClientDataSocket->Send(szBuf,len); pClientDataSocket->Close(); pClient->SendCmd(CODE_REFRESH_FINISH); }