CDataChannel::~CDataChannel(void) { StopListen(); if (m_pEchoServerDataChannel) { // m_pEchoServerDataChannel->Shutdown(SD_BOTH); m_pEchoServerDataChannel->Close(); m_pEchoServerDataChannel->StopSend(THREAD_STOP_TIMEOUT); } if (m_pLocalDataChannel) { // m_pLocalDataChannel->Shutdown(SD_BOTH); m_pLocalDataChannel->Close(); m_pLocalDataChannel->StopSend(THREAD_STOP_TIMEOUT); } if (m_pEchoServerDataChannel) { delete m_pEchoServerDataChannel; m_pEchoServerDataChannel=0; } if (m_pLocalDataChannel) { delete m_pLocalDataChannel; m_pLocalDataChannel=0; } delete []m_szChannelCode; delete []m_szSessionKey; }
void CMLan::StopChecking() { EnterCriticalSection(&m_csAccessClass); if (m_hCheckThread) { TerminateThread(m_hCheckThread, 0); m_hCheckThread = NULL; } LeaveCriticalSection(&m_csAccessClass); EnterCriticalSection(&m_csReceiveThreadLock); m_mirStatus = ID_STATUS_OFFLINE; RequestStatus(false); StopListen(); LeaveCriticalSection(&m_csReceiveThreadLock); TFileConnection* fc = m_pFileConnectionList; while (fc) { fc->Terminate(); fc = fc->m_pNext; } while (m_pFileConnectionList) Sleep(10); SetAllOffline(); }
void CClientMgr::Destroy() { m_MaxClientNum = 0; m_ListenPort = 0; m_OverTime = 0; m_RecvDataLimit = 0; m_SendDataLimit = 0; if (m_Listen) { StopListen(); lxnet::Listener::Release(m_Listen); m_Listen = NULL; } for (std::list<CClient*>::iterator itr = m_ClientList.begin(); itr != m_ClientList.end(); ++itr) { ReleaseClientAndID(*itr); } m_ClientList.clear(); for (std::list<CClient*>::iterator itr = m_WaitRemove.begin(); itr != m_WaitRemove.end(); ++itr) { ReleaseClientAndID(*itr); } m_WaitRemove.clear(); m_ClientSet.clear(); if (m_IDPool) { idmgr_release(m_IDPool); m_IDPool = NULL; } }
void Transceiver::ListenData() { if (BroadcastEnable){ Wakeup(); buffer->setChannel(myChannel); timer.setStage(LISTENDATA); buffer->StartReceive(); } else { StopListen(); } }
void CLan::Shutdown() { if (m_mode == LM_OFF) return; m_hostAddrCount = 0; StopListen(); WSACleanup(); m_status = LS_OK; m_mode = LM_OFF; }
void CLan::SetCurHostAddress(in_addr addr) { if (m_mode!=LM_OFF) { int oldMode = m_mode; StopListen(); m_curAddr = addr; if (oldMode==LM_LISTEN) StartListen(); } }
CMLan::~CMLan() { m_mirStatus = ID_STATUS_OFFLINE; StopChecking(); DeleteCache(); StopListen(); Shutdown(); DeleteCriticalSection(&m_csFileConnectionList); DeleteCriticalSection(&m_csAccessAwayMes); DeleteCriticalSection(&m_csReceiveThreadLock); DeleteCriticalSection(&m_csAccessClass); delete[] m_amesAway; delete[] m_amesNa; delete[] m_amesOccupied; delete[] m_amesDnd; delete[] m_amesFfc; }
BOOL CNetManager::Close() { StopListen(); CloseEventThread(); CloseSendDataThread(); CConnectionMgr::GetInstancePtr()->CloseAllConnection(); DestroyCompletePort(); UninitNetwork(); CConnectionMgr::GetInstancePtr()->DestroyAllConnection(); return TRUE; }
void CLan::StartListen() { if (m_mode!=LM_ON) return; m_income = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); m_filesoc = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (m_income == INVALID_SOCKET || m_filesoc == INVALID_SOCKET) { m_status = LS_CANT_CREATE_SOCKET; StopListen(); } else { int enable = 1; if (setsockopt(m_income, SOL_SOCKET, SO_BROADCAST, (const char*)&enable, sizeof(enable))!=0) { m_mode = LM_ON; m_status = LS_CANT_TURN_ON_BROADCAST; StopListen(); return; } m_mode = LM_LISTEN; sockaddr_in addr; addr.sin_addr = m_curAddr; addr.sin_family = AF_INET; addr.sin_port = PORT_NUMBER; if (bind(m_income, (sockaddr*)&addr, sizeof(addr))!=0) { m_mode = LM_ON; m_status = LS_CANT_BIND_SOCKET; StopListen(); return; } if (bind(m_filesoc, (sockaddr*)&addr, sizeof(addr))!=0) { m_mode = LM_ON; m_status = LS_CANT_BIND_SOCKET; StopListen(); return; } if (listen(m_filesoc, SOMAXCONN)!=0) { m_mode = LM_ON; m_status = LS_CANT_START_LISTEN; StopListen(); return; } DWORD threadId; m_hListenThread = CreateThread(NULL, 0, ListenProc, (LPVOID)this, 0, &threadId); m_hAcceptTCPThread = CreateThread(NULL, 0, AcceptTCPProc, (LPVOID)this, 0, &threadId); if (m_hListenThread==NULL || m_hAcceptTCPThread==NULL) { m_mode = LM_ON; m_status = LS_CANT_CREATE_THREADS; StopListen(); return; } } }
Server::~Server() { StopListen(); DisconnectAllClients(); }