From 40d9fc3fcacf42733efb0c62a668de939798cd7c Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 13 Sep 2019 17:19:25 +0800 Subject: [PATCH] 1 --- server/gameserver/GCListener.cc | 33 ++++++++++++++++++++++++++++----- server/gameserver/app.cc | 14 ++++---------- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/server/gameserver/GCListener.cc b/server/gameserver/GCListener.cc index 3ff26f0..fa03793 100644 --- a/server/gameserver/GCListener.cc +++ b/server/gameserver/GCListener.cc @@ -45,6 +45,7 @@ public: virtual void Reset() override { a8::MixedSession::Reset(); + seed_ = rand(); send_i_ = 0; send_j_ = 0; recv_i_ = 0; @@ -94,18 +95,23 @@ public: #endif bool warning = false; while (buflen - offset >= sizeof(ClientPktHeader)) { - ClientPktHeader* p = (ClientPktHeader*)&buf[offset]; - if (buflen - offset < sizeof(ClientPktHeader) + p->size) { + ClientPktHeader header = *((ClientPktHeader*)&buf[offset]); + DecryptRecv((unsigned char*)&header, sizeof(header)); + header.size = + ((header.size & 0x00FF) << 8) + + ((header.size & 0xFF00) >> 8); + if (buflen - offset < sizeof(ClientPktHeader) + header.size) { break; } + header.size -= 4; App::Instance()->AddSocketMsg(SF_GameClient, socket_handle, saddr, - p->cmd, + header.cmd, 0, &buf[offset + sizeof(ClientPktHeader)], - p->size); - offset += sizeof(ClientPktHeader) + p->size; + header.size); + offset += sizeof(ClientPktHeader) + header.size; } if (warning) { @@ -125,6 +131,17 @@ public: ); } + virtual void OnConnect() override + { + int SMSG_AUTH_CHALLENGE = 0x1EC; + ServerPktHeader header; + header.cmd = SMSG_AUTH_CHALLENGE; + unsigned short len = 4 + 2; + header.size = (len << 8) + (len >> 8); + SendBuff((char*)&header, sizeof(ServerPktHeader)); + SendBuff((char*)&seed_, sizeof(seed_)); + } + virtual void OnDisConnect() override { App::Instance()->AddIMMsg(IM_ClientSocketDisconnect, @@ -134,6 +151,7 @@ public: } private: + unsigned int seed_ = 0; std::vector key_; unsigned char send_i_ = 0; unsigned char send_j_ = 0; @@ -149,6 +167,7 @@ static void CreateGameClientSocket(a8::TcpSession **p) static void GSListeneron_error(a8::TcpListener*, int type, int errorid) { + abort(); a8::UdpLog::Instance()->Debug("GCListeneron_error %d %d", {type, errorid}); } @@ -159,7 +178,11 @@ void GCListener::Init() tcp_listener_->on_error = GSListeneron_error; tcp_listener_->bind_address = "0.0.0.0"; + #if 1 + tcp_listener_->bind_port = 8086; + #else tcp_listener_->bind_port = JsonDataMgr::Instance()->GetConf()->At("listen_port")->AsXValue(); + #endif tcp_listener_->Open(); } diff --git a/server/gameserver/app.cc b/server/gameserver/app.cc index 4b5a5dd..46d197c 100755 --- a/server/gameserver/app.cc +++ b/server/gameserver/app.cc @@ -55,12 +55,6 @@ static void SavePerfLog() void App::Init(int argc, char* argv[]) { - #if 0 - { - Vector2D dir; - dir.Normalize(); - } - #endif signal(SIGPIPE, SIG_IGN); this->argc = argc; this->argv = argv; @@ -72,7 +66,7 @@ void App::Init(int argc, char* argv[]) } return; } - a8::XPrintf("masterserver starting instance_id:%d pid:%d game_id:%d\n", {instance_id, getpid(), GAME_ID}); + a8::XPrintf("gameserver starting instance_id:%d pid:%d game_id:%d\n", {instance_id, getpid(), GAME_ID}); loop_mutex_ = new std::mutex(); loop_cond_ = new std::condition_variable(); @@ -89,7 +83,7 @@ void App::Init(int argc, char* argv[]) uuid.SetMachineId(instance_id); GCListener::Instance()->Init(); - a8::UdpLog::Instance()->Info("masterserver starting instance_id:%d pid:%d", {instance_id, getpid()}); + a8::UdpLog::Instance()->Info("gameserver starting instance_id:%d pid:%d", {instance_id, getpid()}); { int perf_log_time = 1000 * 60 * 5; if (getenv("is_dev_env")) { @@ -133,7 +127,7 @@ int App::Run() return 0; } int ret = 0; - a8::UdpLog::Instance()->Info("masterserver running", {}); + a8::UdpLog::Instance()->Info("gameserver running", {}); last_run_tick_ = a8::XGetTickCount(); int delta_time = 0; while (!terminated) { @@ -410,7 +404,7 @@ bool App::ParseOpt() break; } } - return instance_id > 0 && node_id > 0; + return instance_id > 0; } long long App::NewUuid()