1. 程式人生 > >C++遊戲伺服器程式設計-LogServer

C++遊戲伺服器程式設計-LogServer

// LogServer.cpp : 定義控制檯應用程式的入口點。
//

#include "stdafx.h"
#include "Net/LogNetSessionMgr.h"
#include "LogHandler.h"
int main()
{
    auto res = CLogHandler::GetInstance().Init();
    if (res){
        while(true){
            INetSessionMgr::GetInstance()->Update();
            Sleep(1);
        }
    }

    return
0; }

LogHandler.h

#include "StdAfx.h"
#include "LogHandler.h"
#include "DBMgr.h"
#include "CSDataSource.h" 
#include "Net/LogNetSessionMgr.h"

CLogHandler* CLogHandler::m_pCLogHandler = nullptr;
CLogHandler::CLogHandler(void):m_pDBActiveWrapper(NULL)
{
}


CLogHandler::~CLogHandler(void)
{
}

CLogHandler& CLogHandler
::GetInstance(){ if (NULL == m_pCLogHandler){ m_pCLogHandler = new CLogHandler; } return *m_pCLogHandler; } void CLogHandler::HandleLogMsg(const char* pMsg, int n32MsgLength){ ELOG(LOG_DBBUG, ""); ToLog::WriteLog sMsg; if (!ParseProtoMsg(pMsg, n32MsgLength, sMsg)){ return
; } m_pDBActiveWrapper->EncodeAndSendToDBThread(sMsg, sMsg.msgid()); } void CLogHandler::AsynHanlder(Buffer*& pBuffer){ if (pBuffer->m_LogLevel == ToLog::eMsgToLog_WriteLog){ ToLog::WriteLog sMsg; if (!ParseProtoMsg(pBuffer->GetDataHeader(), pBuffer->GetDataLength(), sMsg)){ return; } /*MysqlDWrapper::*/IDBConnector *pConn = m_pDBActiveWrapper->GetDBConnector(); if (NULL == pConn){ ELOG(LOG_ERROR, ""); return; } INT32 nRet = pConn->ExecQuery(sMsg.log_str() ); if (nRet == eNormal) { pConn->CloseQuery(); } } } bool CLogHandler::Init(){ const char * szDBCfg = "./LGCfg/DBConfig.xml"; TiXmlDocument doc(szDBCfg); if(doc.LoadFile()) { TiXmlHandle dochandle(&doc); TiXmlElement *father = dochandle.FirstChild("DBCfg").FirstChild("DB").ToElement(); auto port = atoi(dochandle.FirstChild("DBCfg").FirstChildElement("port").ToElement()->GetText()); CLogNetSessionMgr* pSessionMgr = new CLogNetSessionMgr; INetSessionMgr::GetInstance()->CreateListener(port, 102400, 102400, 0, &gClientSessionFactory); SetDBData(father, m_DbCfg); m_pDBActiveWrapper = new DBActiveWrapper(std::bind(&CLogHandler::AsynHanlder, this, std::placeholders::_1), m_DbCfg); m_pDBActiveWrapper->Start(); ELOG(LOG_INFO, "Init Success!"); } else{ ELOG(LOG_ERROR, "Init Failed!"); return false; } return true; } void CLogHandler::SetDBData(TiXmlElement * father, SDBCfg &sDBCfg){ TiXmlElement *ip = father->FirstChildElement("ip")->ToElement(); strcpy(sDBCfg.aszDBHostIP , ip->GetText() ); TiXmlElement *port = father->FirstChildElement("Port")->ToElement(); sDBCfg.un32DBHostPort = atoi(port->GetText()); TiXmlElement *user = father->FirstChildElement("user")->ToElement(); strcpy(sDBCfg.aszDBUserName , user->GetText()); TiXmlElement *pwd = father->FirstChildElement("pwd")->ToElement(); strcpy(sDBCfg.aszDBUserPwd , pwd->GetText()); TiXmlElement *dbname = father->FirstChildElement("dbname")->ToElement(); strcpy(sDBCfg.aszDBName , dbname->GetText()); }

相關推薦

C++遊戲伺服器程式設計-LogServer

// LogServer.cpp : 定義控制檯應用程式的入口點。 // #include "stdafx.h" #include "Net/LogNetSessionMgr.h" #includ

C++網路伺服器程式設計的學習路線

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

c++遊戲伺服器框架

http://sourceforge.net/projects/levent/] 5、ACE是一個很成熟的中介軟體產品,為自適應通訊環境,但它過於巨集大,一堆的設計模式,架構是一層又一層,對初學者來說,有點困難。 http://download.

C++遊戲伺服器開發視訊教程

課程目錄+ _6 M" L* c' u1 @; H$ e& w# C( k( P├─100-詳解12 聊天室伺服器02 網路庫asio 14_recv.mkv├─101-詳解13 聊天室伺服器對應的客戶端 網路庫asio 15_recv.mkv├─102-詳解14 聊

學習遊戲伺服器程式設計提高篇

筆者介紹:姜雪偉,IT公司技術合夥人,IT高階講師,CSDN社群專家,特邀編輯,暢銷書作者,國家專利發明人;已出版書籍:《手把手教你架構3D遊戲引擎》電子工業出版社和《實戰核心技術詳解》電子工業出版社等。在上篇學習遊戲伺服器基礎篇中給讀者介紹瞭如何學習遊戲伺服器,主要針對的是

C++網路伺服器程式設計的學習路線?

【來信】 賀老師,您好!   我叫ZQ,畢業於W大學工程結構分析專業,2012年畢業,到2015年5月內,我一直從事的是建築結構的設計,由於房地產行業的不景氣,公司的人都轉了,於是也產生了轉行的想法

[叄]Pomelo遊戲伺服器程式設計分享 之 伺服器結構與配置分析

網路部署結構 我們先看一下Pomelo伺服器網路部署情況,直接上圖 Pomelo伺服器端框架簡單地可分為兩層,即連結層(Connector、Gate)和服務層(Logic、Master),也叫前端伺服器(frontend server)和後端伺服器(backend se

【一篇文章帶你讀完《C++遊戲程式設計入門 第4版》】

《C++遊戲程式設計入門 第4版》下載地址:https://download.csdn.net/download/qq_23996157/10764030 有道雲筆記分享:http://note.youdao.com/noteshare?id=4604366ece0ac2950db30ade53

【一篇文章帶你讀完《C++遊戲與圖形程式設計基礎 第2版》】

《C++遊戲與圖形程式設計基礎 第2版》 下載地址:https://download.csdn.net/download/qq_23996157/10745496 AGK(App Game Kit)下載地址:https://download.csdn.net/download/qq_2

《網路遊戲伺服器程式設計》——學習筆記(day1)

宣告 本人萌新一枚,以後想進入遊戲開發行業,so,開始自學《網路遊戲伺服器端程式設計》一書,在部落格上寫筆記以記錄提取一些書中我自認為有用的知識點,如有侵權或者一些別的問題,請私信我,謝謝! 網路程式設計基礎 網路遊戲伺服器端開發概述 Client/Serve

c++遊戲程式設計

C++ Game Programming[1] 1 Guess Number! Basic ideas: The program will generate a random number. And you can input your guess to the

從零學習遊戲伺服器開發(四)LogServer原始碼探究

這是從零學習開源專案的第四篇,上一篇是《從零學習開源專案系列(三) CSBattleMgr服務原始碼研究》,這篇文章我們一起來學習LogServer,中文意思可能是“日誌伺服器”。那麼這個日誌伺服器到底做了哪些工作呢?我們在Visual Studio中將LogServer設定

C#遊戲程式設計:《控制檯小遊戲系列》之《六、貪吃蛇例項》

[csharp] view plaincopyprint? using System;   using CEngine;   using CGraphics;   namespace Snake   {       /// <summary>

C#遊戲程式設計:《控制檯小遊戲系列》之《推箱子》

##編輯一下看看csdn支援markdown沒有 `測試` 經典的《推箱子》遊戲: /* * ///////////////////////////////////////////////////////////////////// * Program : C

Windows C語言 Socket程式設計 server端(伺服器)--初級(多客戶端——初級版)

看過我的簡單版的伺服器程式碼的,會發現那段程式碼同一時間只能和一個客戶端通訊。這樣的程式碼能力很小侷限性很大。今天我來介紹一種多客戶端的伺服器程式碼。當然這段程式碼還是有問題的,至於是什麼問題我會在程式碼後面說清楚。 我的這個多客戶端的程式碼核心思想是多執行緒

C#遊戲程式設計:《控制檯小遊戲系列》之《二、遊戲框架設計》

遊戲初始化 此模組對遊戲資料進行初始化操作,為遊戲分配相應的記憶體空間。遊戲主迴圈 此模組開始執行各種操作,直到遊戲結束或者使用者退出遊戲為止。遊戲輸入 此模組負責監聽使用者的輸入,根據輸入改變相應的遊戲邏輯。遊戲邏輯 此模組是遊戲的主體部分,包括遊戲中的碰撞檢測,人工智慧,物理系統等,其結果

Linux C網路程式設計 ————6、IO複用併發伺服器程式設計

伺服器端程式碼實現#include<stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h>

Windows C語言 UDP程式設計 server端(伺服器、客戶端)--初級(簡單版)

UDP協議全稱是使用者資料報協議[1] ,在網路中它與TCP協議一樣用於處理資料包,是一種無連線的協議。在OSI模型中,在第四層——傳輸層,處於IP協議的上一層。UDP有不提供資料包分組、組裝和不能對資料包進行排序的缺點,也就是說,當報文傳送之後,是無法得知其

C++遊戲程式設計(1)——先做一個視窗

C++遊戲程式設計(1) Are you a game lover?如果是的,那麼你想開發一個遊戲嗎?如果想,那就跟著我來吧。 一.一個視窗的開始 先看VS2017的初始視窗程式碼。 //cppgame1.cpp: 定義應用程式的入口點。 //

C#遊戲程式設計:《控制檯小遊戲系列》之《一、黎明前的黑暗》

http://m.blog.csdn.net/blog/fa6507/8545233 本系列文章轉載至hwenycocodq520 一、前言     碼夫掐指一算,部落格擱置已半載有餘。這半年多來,油價漲的漲,食物毒的毒,小日本越發囂張……惟獨碼夫心如止水,不,是