/// <summary>
 /// 发送验证结果
 /// </summary>
 private void SendLoginResult(ClientUID client_uid, eLoginResult result, long account_idx, ushort spid)
 {
     ws2gs.ClientLogin msg = PacketPools.Get(ws2gs.msg.CLIENT_LOGIN) as ws2gs.ClientLogin;
     msg.client_uid   = client_uid;
     msg.login_result = result;
     if (result == eLoginResult.E_SUCCESS)
     {
         msg.account_idx = account_idx;
         msg.spid        = spid;
         msg.ss_uid      = ServerNetManager.Instance.AllocSSForClient();
     }
     ServerNetManager.Instance.Send(client_uid.srv_uid, msg);
 }
Beispiel #2
0
        /// <summary>
        /// 登录
        /// </summary>
        private void OnClientLogin(PacketBase packet)
        {
            ws2gs.ClientLogin msg = packet as ws2gs.ClientLogin;

            ///1.查询完成,确认这个过程中是否已经退出
            ClientSession session = ClientSessionManager.Instance.GetSession(msg.client_uid.conn_idx);

            if (session == null)
            {
                return;
            }

            ///2.修改状态
            if (msg.login_result == eLoginResult.E_SUCCESS)
            {
                //更新数据
                session.account_idx    = msg.account_idx;
                session.spid           = msg.spid;
                session.ss_uid         = msg.ss_uid;
                session.session_status = eSessionStatus.ALREADY_LOGIN;
                ClientSessionManager.Instance.AddSessionByAccount(session.account_idx, session.conn_idx);
            }
            else
            {
                session.session_status = eSessionStatus.LOGIN_FAILED;
                //是否超过验证次数:是的话直接踢号
                session.login_error_count += 1;
                if (session.login_error_count >= 5)
                {
                    ClientSessionManager.Instance.KickoutSession(session.conn_idx);
                    return;
                }
            }

            ///3.告诉客户端
            gs2c.ClientLogin rep_msg = PacketPools.Get(gs2c.msg.CLIENT_LOGIN) as gs2c.ClientLogin;
            rep_msg.login_result = msg.login_result;
            session.Send(rep_msg);
        }