void OnCommand(WPARAM wParam, LPARAM lParam) { int nPort; switch (LOWORD(wParam)) { case IDM_STARTSERVICE: { g_fTerminated = FALSE; if (!jRegGetKey(_DB_SERVER_REGISTRY, _TEXT("LocalPort"), (LPBYTE)&nPort)) nPort = 5000; LoadCharacterRecords(); InitServerSocket(g_ssock, &g_saddr, _IDM_GATECOMMSOCK_MSG, 6000, 1); InitGateCommSocket(g_gssock, &g_gsaddr, _IDM_GATECOMMSOCK_MSG, 5100, FD_ACCEPT|FD_READ|FD_CLOSE); UINT dwThreadIDForMsg = 0; unsigned long hThreadForMsg = 0; // if (hThreadForMsg = _beginthreadex(NULL, 0, ProcessUserHuman, NULL, 0, &dwThreadIDForMsg)) hThreadForMsg = _beginthreadex(NULL, 0, ProcessDBMsg, NULL, 0, &dwThreadIDForMsg); hThreadForMsg = _beginthreadex(NULL, 0, ProcessGateMsg, NULL, 0, &dwThreadIDForMsg); SwitchMenuItem(TRUE); return; } case IDM_STOPSERVICE: { g_fTerminated = TRUE; SwitchMenuItem(FALSE); return; } case IDM_CONFIG: { DialogBox(g_hInst, MAKEINTRESOURCE(IDD_CONFIGDLG), NULL, (DLGPROC)ConfigDlgFunc); return; } } }
UINT WINAPI LoadAccountRecords(LPVOID lpParameter) { //InsertLogMsg(IDS_LOADACCOUNTRECORDS); //下面这一段是获取服务器相关消息的,暂时屏蔽掉 //CRecordset *pRec = GetDBManager()->CreateRecordset(); //pRec->Execute( "UPDATE TBL_ACCOUNT SET FLD_CERTIFICATION=0 WHERE FLD_CERTIFICATION >= 30" ); //GetDBManager()->DestroyRecordset( pRec ); //// ---------------------------------------------------------------------------------------- //GAMESERVERINFO *pServerInfo; //pRec = GetDBManager()->CreateRecordset(); //if ( pRec->Execute( "SELECT * FROM TBL_SERVERINFO" ) ) //{ // while ( pRec->Fetch() ) // { // pServerInfo = new GAMESERVERINFO; // if ( !pServerInfo ) // break; // pServerInfo->index = atoi( pRec->Get( "FLD_SERVERIDX" ) ); // strcpy( pServerInfo->name, pRec->Get( "FLD_SERVERNAME" ) ); // strcpy( pServerInfo->ip, pRec->Get( "FLD_SERVERIP" ) ); // pServerInfo->connCnt = 0; // g_xGameServerList.AddNewNode( pServerInfo ); // } //} //GetDBManager()->DestroyRecordset( pRec ); GAMESERVERINFO *pServerInfo; char szTmp[64]; for ( PLISTNODE pNode = g_xGameServerList.GetHead(); pNode; pNode = g_xGameServerList.GetNext( pNode ) ) { pServerInfo = g_xGameServerList.GetData( pNode ); sprintf( szTmp, "%d,%s,", pServerInfo->index, pServerInfo->name ); strcat( g_szServerList, szTmp ); } // ---------------------------------------------------------------------------------------- InitServerThreadForMsg(); if (InitServerSocket(g_gcSock, &g_gcAddr, _IDM_GATECOMMSOCK_MSG, 5500, 1)) SwitchMenuItem(TRUE); return 0L; }
void OnCommand(WPARAM wParam, LPARAM lParam) { switch (LOWORD(wParam)) { case IDM_STARTSERVICE: { //开始服务器 g_fTerminated = FALSE; UINT dwThreadIDForMsg = 0; unsigned long hThreadForMsg = 0; //创建一条线程 hThreadForMsg = _beginthreadex(NULL, 0, LoadAccountRecords, NULL, 0, &dwThreadIDForMsg); return; } case IDM_STOPSERVICE: { ClearSocket(g_gcSock); SwitchMenuItem(FALSE); return; } case IDM_FONTCOLOR: SetFontColor(); return; case IDM_BACKCOLOR: SetBackColor(); return; case IDM_CONFIG: { CreateConfigProperties(); return; } } }
UINT WINAPI LoadAccountRecords(LPVOID lpParameter) { //获取服务器列表的 GAMESERVERINFO *pServerInfo; char szTmp[64]; for ( PLISTNODE pNode = g_xGameServerList.GetHead(); pNode; pNode = g_xGameServerList.GetNext( pNode ) ) { pServerInfo = g_xGameServerList.GetData( pNode ); sprintf( szTmp, "%d,%s,", pServerInfo->index, pServerInfo->name ); strcat( g_szServerList, szTmp ); } // ---------------------------------------------------------------------------------------- //服务器线程 InitServerThreadForMsg(); ENGINE_COMPONENT_INFO info = g_SeverConfig.getLoginSrvInfo(); if (InitServerSocket(g_gcSock, &g_gcAddr, _IDM_GATECOMMSOCK_MSG, info.intport?info.intport:5500, 1)) SwitchMenuItem(TRUE); return 0L; }