BOOL CUdpServer::Start(LPCTSTR pszBindAddress, USHORT usPort) { if(!CheckParams() || !CheckStarting()) return FALSE; if(CreateListenSocket(pszBindAddress, usPort)) if(CreateCompletePort()) if(CreateWorkerThreads()) if(CreateDetectorThread()) if(StartAccept()) { m_enState = SS_STARTED; return TRUE; } Stop(); return FALSE; }
BOOL CUdpClient::Start(LPCTSTR pszRemoteAddress, USHORT usPort, BOOL bAsyncConnect) { if(!CheckParams() || !CheckStarting()) return FALSE; PrepareStart(); BOOL isOK = FALSE; m_bAsyncConnect = bAsyncConnect; if(CreateClientSocket()) { if(FirePrepareConnect(this, m_soClient) != HR_ERROR) { if(ConnectToServer(pszRemoteAddress, usPort)) { if(CreateWorkerThread()) { if(CreateDetectorThread()) isOK = TRUE; else SetLastError(SE_DETECT_THREAD_CREATE, __FUNCTION__, ERROR_CREATE_FAILED); } else SetLastError(SE_WORKER_THREAD_CREATE, __FUNCTION__, ERROR_CREATE_FAILED); } else SetLastError(SE_CONNECT_SERVER, __FUNCTION__, ::WSAGetLastError()); } else SetLastError(SE_SOCKET_PREPARE, __FUNCTION__, ERROR_CANCELLED); } else SetLastError(SE_SOCKET_CREATE, __FUNCTION__, ::WSAGetLastError()); if(!isOK) Stop(); return isOK; }