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 一、前言 碼夫掐指一算,部落格擱置已半載有餘。這半年多來,油價漲的漲,食物毒的毒,小日本越發囂張……惟獨碼夫心如止水,不,是