15,471
社区成员
发帖
与我相关
我的任务
分享
DWORD CSecServerDlg::Init()
{
WSADATA wsd;
sockaddr_in si;
WNDCLASS ws;
DWORD dwID;
int n = sizeof(REGISTE_DATA);
g_pMain = this;
m_dwCurrentGroundId = 1;
m_sock_regserver = INVALID_SOCKET;
m_bTakeMouse = FALSE;
m_hPerView = NULL;
m_strMsg = TEXT("授权信息:未注册免费试用版");
m_bChangePass = FALSE;
m_bConnectToRegServer = TRUE;
//保存工作路径
GetCurrentDirectory(MAX_PATH, m_szWorkPath);
InitializeCriticalSection (&g_cs_client);
InitializeCriticalSection (&g_cs_ground);
InitializeCriticalSection (&g_cs_cfg);
InitializeCriticalSection (&g_cs_thread);
//创建事件对象
//当发送修改密码消息时,需等收到服务器返回再发送HOSTINFO。
if (NULL == (m_hEvent_ForCP = CreateEvent(
NULL,
FALSE,
FALSE,
NULL))){
return GetLastError();
}
//注册预览位图的窗口类
ws.cbClsExtra = 0;
ws.cbWndExtra = 0;
ws.hbrBackground = (HBRUSH)::CreateSolidBrush(RGB(255,128,128));
ws.hCursor = LoadCursor (AfxGetApp()->m_hInstance, IDC_ARROW);
ws.hIcon = NULL;
ws.hInstance = AfxGetApp()->m_hInstance;
ws.lpfnWndProc = MaskPerviewWndProc;
ws.lpszClassName = TEXT("MaskPerview");
ws.lpszMenuName = NULL;
ws.style = CS_HREDRAW | CS_VREDRAW;
if (!RegisterClass (&ws)){
return GetLastError();
}
//初始化界面
CImageList * pImg = new CImageList;
pImg->Create(16,16, ILC_COLOR16, 2, 4);
pImg->Add(AfxGetApp()->LoadIcon(IDI_ICON1));
pImg->Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_listClient.SetImageList (pImg, LVSIL_SMALL);
m_listClient.SetExtendedStyle (m_listClient.GetStyle() | LVS_EX_FULLROWSELECT);
m_listClient.InsertColumn (0, TEXT("计算机名"), LVCFMT_LEFT, 150);
m_listClient.InsertColumn (1, TEXT("IP"), LVCFMT_LEFT, 100);
m_listClient.InsertColumn (3, TEXT("网吧"), LVCFMT_LEFT, 100);
m_listClient.InsertColumn (4, TEXT("分组"), LVCFMT_LEFT, 80);
m_listClient.InsertColumn (5, TEXT("状态"), LVCFMT_LEFT, 100);
//初始化网络
WSAStartup (MAKEWORD(2,2), &wsd);
si.sin_addr.s_addr = htonl(ADDR_ANY);
si.sin_family = AF_INET;
si.sin_port = htons(NETPORT_LISTEN);
if (INVALID_SOCKET == (m_sock = socket(AF_INET, SOCK_STREAM, 0))){
WSACleanup();
return WSAGetLastError();
}
if (SOCKET_ERROR == (bind (m_sock, (sockaddr*)&si, sizeof(si)))){
closesocket (m_sock);
WSACleanup();
return WSAGetLastError();
}
if (SOCKET_ERROR == (listen (m_sock, 4))){
closesocket (m_sock);
WSACleanup();
return WSAGetLastError();
}
//连接注册服务器
/**************************** 下面这句出错 **************************/
if (NULL == (m_htr_connect = CreateThread (
NULL,
1024,
ConnectToRegServer,
(LPVOID)this,
0,
&dwID))){
return GetLastError();
}
//数据库格式
AfxGetModuleState()->m_dwVersion = 0x0601;
//连接数据库
try{
LPSTR strSQL_Client = TEXT("SELECT * FROM [Client]");
LPSTR strSQL_Cfg = TEXT("SELECT * FROM [Cfg]");
LPSTR strSQL_Ground = TEXT("SELECT * FROM [Ground] ORDER BY [Ground_ID]");
m_db.Open (DATABASE_PATH);
m_pRS_Client = new CDaoRecordset(&m_db);
m_pRS_Ground = new CDaoRecordset(&m_db);
m_pRS_Cfg = new CDaoRecordset(&m_db);
m_pRS_Client->Open (AFX_DAO_USE_DEFAULT_TYPE, strSQL_Client);
m_pRS_Ground->Open (AFX_DAO_USE_DEFAULT_TYPE, strSQL_Ground);
m_pRS_Cfg ->Open (AFX_DAO_USE_DEFAULT_TYPE, strSQL_Cfg);
//读取分组信息
COleVariant var_GroundId, var_GroundName;
while (!m_pRS_Ground->IsBOF() && !m_pRS_Ground->IsEOF()){
GROUND_INFO * pgi = new GROUND_INFO;
m_pRS_Ground->GetFieldValue (TEXT("Ground_ID"), var_GroundId);
m_pRS_Ground->GetFieldValue (TEXT("Ground_Name"), var_GroundName);
pgi->dwGround_Idx = var_GroundId.lVal;
lstrcpy (pgi->szGround_Name, (LPSTR)var_GroundName.pbVal);
g_listGround.Add(pgi);
AddGround(pgi);
m_pRS_Ground->MoveNext();
}
//读取配置信息
COleVariant var_CfgId, var_Cfg_GroundId, var_passedtime, var_bitmap, var_URL;
while (!m_pRS_Cfg->IsBOF() && !m_pRS_Cfg->IsEOF()){
CFG_INFO * pcfg = new CFG_INFO;
m_pRS_Cfg->GetFieldValue (TEXT("Cfg_ID"), var_CfgId);
m_pRS_Cfg->GetFieldValue (TEXT("Cfg_PassedTime"), var_passedtime);
m_pRS_Cfg->GetFieldValue (TEXT("Cfg_GroundId"), var_Cfg_GroundId);
m_pRS_Cfg->GetFieldValue (TEXT("Cfg_LogPath"), var_bitmap);
m_pRS_Cfg->GetFieldValue (TEXT("Cfg_URL"), var_URL);
pcfg->dwId = var_CfgId.lVal;
pcfg->dwGround_Idx = var_Cfg_GroundId.lVal;
lstrcpy (pcfg->szPassedTime, (LPSTR)var_passedtime.pbVal);
lstrcpy (pcfg->szBitmapPath, (LPSTR)var_bitmap.pbVal);
lstrcpy (pcfg->szURL, (LPSTR)var_URL.pbVal);
g_listCfg.Add(pcfg);
m_pRS_Cfg->MoveNext();
}
//读取客户机信息
LoadClientsFromDB();
UpdateClientInfo();
m_listGround.SetCurSel(0);
OnSelchangeListGround();
}
catch (CDaoException * e){
e->ReportError();
return 9999;
}
//读取授权信息,并向授权服务器查询
ZeroMemory(&m_ri, sizeof(m_ri));
LoadImpower();
m_ri.bExamine = FALSE;
m_ri.bOnLine = FALSE;
UpdateData(FALSE);
OnUpdateMsg(0,0);
return 0;
}