BOOL CTcpClient::Start(LPCTSTR pszRemoteAddress, USHORT usPort, BOOL bAsyncConnect) { if(!CheckParams() || !CheckStarting()) return FALSE; BOOL isOK = FALSE; m_bAsyncConnect = bAsyncConnect; if(CreateClientSocket()) { if(FirePrepareConnect(m_dwConnID, m_soClient) != HR_ERROR) { if(ConnectToServer(pszRemoteAddress, usPort)) { if(CreateWorkerThread()) isOK = TRUE; else SetLastError(SE_WORKER_THREAD_CREATE, __FUNCTION__, ERROR_CREATE_FAILED); } else SetLastError(SE_CONNECT_SERVER, __FUNCTION__, ::WSAGetLastError()); } else SetLastError(SE_SOCKET_PREPARE, __FUNCTION__, ERROR_FUNCTION_FAILED); } else SetLastError(SE_SOCKET_CREATE, __FUNCTION__, ::WSAGetLastError()); if(!isOK) Stop(); return isOK; }
BOOL CIocpServer::Start(LPCTSTR pszBindAddress, USHORT usPort) { if(!CheckParams() || !CheckStarting()) return FALSE; //创建监听套接字开始监听端口 if(CreateListenSocket(pszBindAddress, usPort)) { if(CreateCompletePort()) { if(CreateWorkerThreads()) { if(StartAcceptThread()) { m_enState = SS_STARTED; return TRUE; } } } } Stop(); return FALSE; }
BOOL CUdpCast::Start(LPCTSTR lpszRemoteAddress, USHORT usPort, BOOL bAsyncConnect, LPCTSTR lpszBindAddress) { if(!CheckParams() || !CheckStarting()) return FALSE; PrepareStart(); m_ccContext.Reset(); BOOL isOK = FALSE; HP_SOCKADDR bindAddr(AF_UNSPEC, TRUE); if(CreateClientSocket(lpszRemoteAddress, usPort, lpszBindAddress, bindAddr)) { if(BindClientSocket(bindAddr)) { if(FirePrepareConnect(m_soClient) != HR_ERROR) { if(ConnectToGroup(bindAddr)) { if(CreateWorkerThread()) { isOK = TRUE; } 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_BIND, __FUNCTION__, ::WSAGetLastError()); } else SetLastError(SE_SOCKET_CREATE, __FUNCTION__, ::WSAGetLastError()); if(!isOK) { DWORD dwCode = ::GetLastError(); m_ccContext.Reset(FALSE); Stop(); ::SetLastError(dwCode); } return isOK; }
BOOL CTcpClient::Start(LPCTSTR lpszRemoteAddress, USHORT usPort, BOOL bAsyncConnect, LPCTSTR lpszBindAddress, USHORT usLocalPort) { if(!CheckParams() || !CheckStarting()) return FALSE; PrepareStart(); m_ccContext.Reset(); BOOL isOK = FALSE; HP_SOCKADDR addrRemote, addrBind; if(CreateClientSocket(lpszRemoteAddress, addrRemote, usPort, lpszBindAddress, addrBind)) { if(BindClientSocket(addrBind, addrRemote, usLocalPort)) { if(TRIGGER(FirePrepareConnect(m_soClient)) != HR_ERROR) { if(ConnectToServer(addrRemote, bAsyncConnect)) { if(CreateWorkerThread()) isOK = TRUE; else SetLastError(SE_WORKER_THREAD_CREATE, __FUNCTION__, ERROR_CREATE_FAILED); } else SetLastError(SE_CONNECT_SERVER, __FUNCTION__, ::WSAGetLastError()); } else SetLastError(SE_SOCKET_PREPARE, __FUNCTION__, ENSURE_ERROR_CANCELLED); } else SetLastError(SE_SOCKET_BIND, __FUNCTION__, ::WSAGetLastError()); } else SetLastError(SE_SOCKET_CREATE, __FUNCTION__, ::WSAGetLastError()); if(!isOK) { m_ccContext.Reset(FALSE); EXECUTE_RESTORE_ERROR(Stop()); } return isOK; }
BOOL CHPThreadPool::Start(DWORD dwThreadCount, DWORD dwMaxQueueSize, EnRejectedPolicy enRejectedPolicy, DWORD dwStackSize) { if(!CheckStarting()) return FALSE; m_dwStackSize = dwStackSize; m_dwMaxQueueSize = dwMaxQueueSize; m_enRejectedPolicy = enRejectedPolicy; if(!InternalAdjustThreadCount(dwThreadCount)) { EXECUTE_RESTORE_ERROR(Stop()); return FALSE; } m_enState = SS_STARTED; return TRUE;; }
BOOL CTcpAgent::Start(LPCTSTR pszBindAddress, BOOL bAsyncConnect) { if(!CheckParams() || !CheckStarting()) return FALSE; if(ParseBindAddress(pszBindAddress, bAsyncConnect)) if(CreateCompletePort()) if(CreateWorkerThreads()) { m_bAsyncConnect = bAsyncConnect; m_enState = SS_STARTED; return TRUE; } Stop(); return FALSE; }
BOOL CTcpServer::Start(LPCTSTR lpszBindAddress, USHORT usPort) { if(!CheckParams() || !CheckStarting()) return FALSE; PrepareStart(); if(CreateListenSocket(lpszBindAddress, usPort)) if(CreateCompletePort()) if(CreateWorkerThreads()) if(StartAccept()) { m_enState = SS_STARTED; return TRUE; } EXECUTE_RESTORE_ERROR(Stop()); return FALSE; }
BOOL CTcpServer::Start(LPCTSTR lpszBindAddress, USHORT usPort) { if(!CheckParams() || !CheckStarting()) return FALSE; PrepareStart(); if(CreateListenSocket(lpszBindAddress, usPort)) if(CreateCompletePort()) if(CreateWorkerThreads()) if(StartAccept()) { m_enState = SS_STARTED; return TRUE; } DWORD dwCode = ::GetLastError(); Stop(); ::SetLastError(dwCode); return FALSE; }