This commit is contained in:
aozhiwei 2019-09-13 17:19:25 +08:00
parent f6cae707ed
commit 40d9fc3fca
2 changed files with 32 additions and 15 deletions

View File

@ -45,6 +45,7 @@ public:
virtual void Reset() override virtual void Reset() override
{ {
a8::MixedSession::Reset(); a8::MixedSession::Reset();
seed_ = rand();
send_i_ = 0; send_i_ = 0;
send_j_ = 0; send_j_ = 0;
recv_i_ = 0; recv_i_ = 0;
@ -94,18 +95,23 @@ public:
#endif #endif
bool warning = false; bool warning = false;
while (buflen - offset >= sizeof(ClientPktHeader)) { while (buflen - offset >= sizeof(ClientPktHeader)) {
ClientPktHeader* p = (ClientPktHeader*)&buf[offset]; ClientPktHeader header = *((ClientPktHeader*)&buf[offset]);
if (buflen - offset < sizeof(ClientPktHeader) + p->size) { DecryptRecv((unsigned char*)&header, sizeof(header));
header.size =
((header.size & 0x00FF) << 8) +
((header.size & 0xFF00) >> 8);
if (buflen - offset < sizeof(ClientPktHeader) + header.size) {
break; break;
} }
header.size -= 4;
App::Instance()->AddSocketMsg(SF_GameClient, App::Instance()->AddSocketMsg(SF_GameClient,
socket_handle, socket_handle,
saddr, saddr,
p->cmd, header.cmd,
0, 0,
&buf[offset + sizeof(ClientPktHeader)], &buf[offset + sizeof(ClientPktHeader)],
p->size); header.size);
offset += sizeof(ClientPktHeader) + p->size; offset += sizeof(ClientPktHeader) + header.size;
} }
if (warning) { 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 virtual void OnDisConnect() override
{ {
App::Instance()->AddIMMsg(IM_ClientSocketDisconnect, App::Instance()->AddIMMsg(IM_ClientSocketDisconnect,
@ -134,6 +151,7 @@ public:
} }
private: private:
unsigned int seed_ = 0;
std::vector<unsigned char> key_; std::vector<unsigned char> key_;
unsigned char send_i_ = 0; unsigned char send_i_ = 0;
unsigned char send_j_ = 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) static void GSListeneron_error(a8::TcpListener*, int type, int errorid)
{ {
abort();
a8::UdpLog::Instance()->Debug("GCListeneron_error %d %d", {type, errorid}); 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_->on_error = GSListeneron_error;
tcp_listener_->bind_address = "0.0.0.0"; 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(); tcp_listener_->bind_port = JsonDataMgr::Instance()->GetConf()->At("listen_port")->AsXValue();
#endif
tcp_listener_->Open(); tcp_listener_->Open();
} }

View File

@ -55,12 +55,6 @@ static void SavePerfLog()
void App::Init(int argc, char* argv[]) void App::Init(int argc, char* argv[])
{ {
#if 0
{
Vector2D dir;
dir.Normalize();
}
#endif
signal(SIGPIPE, SIG_IGN); signal(SIGPIPE, SIG_IGN);
this->argc = argc; this->argc = argc;
this->argv = argv; this->argv = argv;
@ -72,7 +66,7 @@ void App::Init(int argc, char* argv[])
} }
return; 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_mutex_ = new std::mutex();
loop_cond_ = new std::condition_variable(); loop_cond_ = new std::condition_variable();
@ -89,7 +83,7 @@ void App::Init(int argc, char* argv[])
uuid.SetMachineId(instance_id); uuid.SetMachineId(instance_id);
GCListener::Instance()->Init(); 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; int perf_log_time = 1000 * 60 * 5;
if (getenv("is_dev_env")) { if (getenv("is_dev_env")) {
@ -133,7 +127,7 @@ int App::Run()
return 0; return 0;
} }
int ret = 0; int ret = 0;
a8::UdpLog::Instance()->Info("masterserver running", {}); a8::UdpLog::Instance()->Info("gameserver running", {});
last_run_tick_ = a8::XGetTickCount(); last_run_tick_ = a8::XGetTickCount();
int delta_time = 0; int delta_time = 0;
while (!terminated) { while (!terminated) {
@ -410,7 +404,7 @@ bool App::ParseOpt()
break; break;
} }
} }
return instance_id > 0 && node_id > 0; return instance_id > 0;
} }
long long App::NewUuid() long long App::NewUuid()