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
{
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<unsigned char> 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();
}

View File

@ -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()