Esempio n. 1
0
    public string DoA014Query(string a014_id_, string objid_, string table____)
    {
        string sql_ = objid_;

        string[] sqllist   = Regex.Split(objid_, "<V></V>", RegexOptions.IgnoreCase);
        string   e_sqllist = "";

        for (int i = 0; i < sqllist.Length; i++)
        {
            string str_sql = sqllist[i];
            if (str_sql == null || str_sql.Length < 5)
            {
                continue;
            }
            /*获取要处理的sql*/
            try
            {
                string e_sql = "pkg_a.doa014('" + a014_id_ + "','" + table____ + "','" + str_sql + "','" + GlobeAtt.A007_KEY + "',[A311_KEY])";
                e_sqllist += "begin " + e_sql + ";end;";
                e_sql      = Fun.execSql(e_sql, GlobeAtt.A007_KEY, GlobeAtt.A002_KEY, "A014_ID=" + a014_id_);
                if (e_sql != "0")
                {
                    return(e_sql);
                }
            }
            catch (Exception ex)
            {
                return("00" + ex.Message);
            }
        }
        //    public string execSqlList(string sqlxml, string user_id_, string menu_id_,string key_id,string a014_id_)
        Fun.execSqlList(e_sqllist, GlobeAtt.A007_KEY, GlobeAtt.A002_KEY, "[A311_KEY]", a014_id_);
        return("00" + BaseMsg.getMsg("M0018"));;
    }
Esempio n. 2
0
        public Message Deserialize(byte[] buffer, int offset, int size)
        {
            if (size <= 4)
            {
                return(null);
            }
            //java  use big endian
            int curOffset = offset;
            int restSize  = size;

            MemoryStream baseStream = new MemoryStream(buffer, offset, size);
            BaseMsg      baseMsg    = null;

            try
            {
                baseMsg = (BaseMsg)ProtoBuf.Serializer.NonGeneric.Deserialize(typeof(BaseMsg), baseStream);
            }
            catch (Exception ex)
            {
                LogU.Error(ex.StackTrace);
            }

            Message msg = new Message();

            msg.Id      = baseMsg.id;
            msg.BaseMsg = baseMsg;

            return(msg);
        }
Esempio n. 3
0
        void OnPlayerConnect(Session session, BaseMsg message)
        {
            //TODO load from db
            var info = new Player();

            info.UserId             = _idCounter++;
            info.PeerTcp            = session;
            info.PeerUdp            = session;
            _id2Player[info.UserId] = info;
            session.BindInfo        = info;
            _curCount++;
            if (_curCount >= Game.MaxPlayerCount)
            {
                //TODO temp code
                _game = new Game();
                var players = new Player[_curCount];
                int i       = 0;
                foreach (var player in _id2Player.Values)
                {
                    player.LocalId = (byte)i;
                    player.Game    = _game;
                    players[i]     = player;
                    i++;
                }
                _game.DoStart(0, 0, 0, players, "123");
            }

            Debug.Log("OnPlayerConnect count:" + _curCount + " ");
        }
        //**********************************************************************
        //**********************************************************************
        //**********************************************************************
        // Receive message handlers

        public override void processRxMsg(ByteContent aMsg)
        {
            BaseMsg tRxMsg = (BaseMsg)aMsg;

            // Message jump table based on message type.
            // Calls corresponding specfic message handler method.
            switch (tRxMsg.mMessageType)
            {
            case MsgIdT.cTestMsg:
                processRxMsg((TestMsg)tRxMsg);
                break;

            case MsgIdT.cStatusRequestMsg:
                processRxMsg((StatusRequestMsg)tRxMsg);
                break;

            case MsgIdT.cStatusResponseMsg:
                processRxMsg((StatusResponseMsg)tRxMsg);
                break;

            case MsgIdT.cDataMsg:
                processRxMsg((DataMsg)tRxMsg);
                break;

            default:
                Prn.print(Prn.ThreadRun1, "NetworkThread.processRxMsg UNKNOWN");
                break;
            }
        }
Esempio n. 5
0
        public void SendTcp(EMsgSC msgId, BaseMsg body)
        {
            Serializer serializer = new Serializer();

            body.Serialize(serializer);
            _netTcp?.SendMessage(msgId, serializer.CopyData());
        }
Esempio n. 6
0
        private void SanQrEventHandler(BaseMsg baseMsg)
        {
            //此处编写业务处理代码
            var msg = baseMsg as ScanQrEventMsg;

            QrLogin(msg, msg.EventKey);
        }
Esempio n. 7
0
 private void UserGetCardHandler(BaseMsg baseMsg)
 {
     var accessToken = AccessTokenBox.GetTokenValue();
     var msg         = baseMsg as GetCardEventMsg;
     var ss          = CardVoucher.UpdateMeeting(accessToken, msg.UserCardCode, Utils.ConvertDateTimeInt(DateTime.Now.AddHours(2)),
                                                 Utils.ConvertDateTimeInt(DateTime.Now.AddHours(4)), "C区", "东北门", "2 排 15 号");
 }
Esempio n. 8
0
        public void OnNetMsg(Player player, ushort opcode, BaseMsg msg)
        {
            var type = (EMsgSC)opcode;

            switch (type)
            {
            //login
            //room
            case EMsgSC.C2G_PlayerInput:
                C2G_PlayerInput(player, msg);
                break;

            case EMsgSC.C2G_HashCode:
                C2G_HashCode(player, msg);
                break;

            case EMsgSC.C2G_LoadingProgress:
                C2G_LoadingProgress(player, msg);
                break;

            case EMsgSC.C2G_ReqMissFrame:
                C2G_ReqMissFrame(player, msg);
                break;

            case EMsgSC.C2G_RepMissFrameAck:
                C2G_RepMissFrameAck(player, msg);
                break;

            default:
                Debug.Log("Unknow msg " + type);
                break;
            }
        }
Esempio n. 9
0
        public void SendTcp(EMsgSC msgId, BaseMsg body)
        {
            var writer = new Serializer();

            body.Serialize(writer);
            netClient?.SendMessage(msgId, writer.CopyData());
        }
Esempio n. 10
0
        private void ClickEventHandler(BaseMsg baseMsg)
        {
            // TODO
            var msg = (ClickEventMsg)baseMsg;

            Utils.OutPrint(msg.EventKey);
            switch (msg.EventKey)
            {
            case "SelectionClick":
                List <ResArticle> acticlesMulti = new List <ResArticle>();
                acticlesMulti.Add(new ResArticle {
                    Title = "闪电侠海报~", Description = "闪电侠迷~", Url = "http://skywalkerxl.free.ngrok.cc/SearchYouWant.html", PicUrl = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1507971147471&di=954cd5f3cd5348ac55ab41cace99eb2d&imgtype=0&src=http%3A%2F%2Fimg31.mtime.cn%2FCMS%2FNews%2F2014%2F11%2F19%2F080838.63641086_620X620.jpg"
                });
                acticlesMulti.Add(new ResArticle {
                    Title = "罗技k310", Description = "图文2的描述", Url = "http://skywalkerxl.free.ngrok.cc/SearchYouWant.html", PicUrl = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1507971147471&di=954cd5f3cd5348ac55ab41cace99eb2d&imgtype=0&src=http%3A%2F%2Fimg31.mtime.cn%2FCMS%2FNews%2F2014%2F11%2F19%2F080838.63641086_620X620.jpg"
                });
                acticlesMulti.Add(new ResArticle {
                    Title = "罗技k310", Description = "图文2的描述", Url = "http://skywalkerxl.free.ngrok.cc/SearchYouWant.html", PicUrl = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1507971147471&di=954cd5f3cd5348ac55ab41cace99eb2d&imgtype=0&src=http%3A%2F%2Fimg31.mtime.cn%2FCMS%2FNews%2F2014%2F11%2F19%2F080838.63641086_620X620.jpg"
                });
                acticlesMulti.Add(new ResArticle {
                    Title = "罗技k310", Description = "图文2的描述", Url = "http://skywalkerxl.free.ngrok.cc/SearchYouWant.html", PicUrl = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1507971147471&di=954cd5f3cd5348ac55ab41cace99eb2d&imgtype=0&src=http%3A%2F%2Fimg31.mtime.cn%2FCMS%2FNews%2F2014%2F11%2F19%2F080838.63641086_620X620.jpg"
                });

                msg.ResArticles(acticlesMulti);
                break;
            }
        }
Esempio n. 11
0
        void OnNet_ReqMissFrame(Player player, BaseMsg data)
        {
            var reqMsg        = data as Msg_ReqMissFrame;
            var nextCheckTick = reqMsg.StartTick;

            Log($"OnNet_ReqMissFrame nextCheckTick id:{player.LocalId}:{nextCheckTick}");
            int count = System.Math.Min(System.Math.Min((Tick - 1), allHistoryFrames.Count) - nextCheckTick,
                                        MaxRepMissFrameCountPerPack);

            if (count <= 0)
            {
                return;
            }
            var msg    = new Msg_RepMissFrame();
            var frames = new ServerFrame[count];

            for (int i = 0; i < count; i++)
            {
                frames[i] = allHistoryFrames[nextCheckTick + i];
                Logging.Debug.Assert(frames[i] != null);
            }

            msg.startTick = frames[0].tick;
            msg.frames    = frames;
            SendUdp(player, EMsgSC.G2C_RepMissFrame, msg, true);
        }
Esempio n. 12
0
        /// <summary>
        /// 根据命令类型返回相关响应类
        /// </summary>
        /// <param name="header"></param>
        /// <param name="bodyBytes"></param>
        /// <returns></returns>
        private static BaseMsg GetSocketRespByHeader(MsgHeaderEnt header, byte[] bodyBytes)
        {
            //  todo 完善信息
            BaseMsg resp = null;

            switch (header.CommandType)
            {
            case CommandType.ConnectResp:
                resp = new ConnectResp(bodyBytes, header);
                break;

            //case CommandType.DeliverResp:
            //    resp = new DeliverResp(bodyBytes, header);
            //    break;
            case CommandType.SubmitResp:
                resp = new SubmitResp(bodyBytes, header);
                break;

            case CommandType.ActiveTest:
                resp = new ActiveTestReq(bodyBytes, header);
                break;

            case  CommandType.ActiveTestResp:
                resp = new ActiveTestResp(bodyBytes, header);
                break;

            default:
                resp = new UnKnowResp(bodyBytes, header);
                break;
            }
            return(resp);
        }
Esempio n. 13
0
        public void SendTcp(EMsgSC msgId, BaseMsg body)
        {
            var writer = new Serializer();

            writer.PutInt16((short)msgId);
            body.Serialize(writer);
            _netTcp?.SendMessage(EMsgSC.C2G_TcpMessage, writer.CopyData());
        }
Esempio n. 14
0
        public void BorderTcp(EMsgSC type, BaseMsg data)
        {
            var bytes = data.ToBytes();

            foreach (var player in Players)
            {
                player?.SendTcp(type, bytes);
            }
        }
Esempio n. 15
0
        public void BorderTcp(EMsgSC type, BaseMsg data)
        {
            var msg = MessageHelper.Create((short)type, data);

            foreach (var player in Players)
            {
                player?.SendTcp(msg);
            }
        }
Esempio n. 16
0
        private static void DoAction(MsgRouter router, BaseMsg msg)
        {
            TestAck ack;

            try
            {
                switch (msg.Action)
                {
                case "Normal":

                    router.ReplyTo(msg, new TestAck(msg.Value));
                    break;

                case "Exception":

                    ack           = new TestAck();
                    ack.Exception = msg.Value;

                    router.ReplyTo(msg, ack);
                    break;

                case "Ignore":

                    break;

                case "ActionCount":

                    ack = new TestAck();

                    lock (syncLock)
                        ack.Value = msg.Value + ": " + actionCount.ToString();

                    router.ReplyTo(msg, ack);
                    break;

                case "Throw-Exception":

                    Assert.Fail(msg.Value);
                    break;

                case "Sleep":

                    Thread.Sleep(TimeSpan.FromSeconds(router.SessionTimeout.TotalSeconds + 5));
                    router.ReplyTo(msg, new TestAck("Hello World!"));
                    break;

                default:

                    throw new InvalidOperationException("Unexpected action.");
                }
            }
            finally
            {
                lock (syncLock)
                    actionCount++;
            }
        }
Esempio n. 17
0
    protected void Page_Load(object sender, EventArgs e)
    {
        base.PageBase_Load(sender, e);
        /*获取当前的角色列表*/
        A014ID  = Request.QueryString["A014ID"] == null ? "" : Request.QueryString["A014ID"].ToString();
        ROWID   = Request.QueryString["ROWID"] == null ? "" : Request.QueryString["ROWID"].ToString();
        dt_A014 = Fun.getDtBySql("Select t.* from A014 t where t.a014_id='" + A014ID + "'");
        if (dt_A014.Rows.Count == 0)
        {
            Response.Write("<script>winclose();</script>");
        }
        IF_FIRST = dt_A014.Rows[0]["IF_FIRST"].ToString();

        DataTable dt_index = new DataTable();

        dt_index   = Fun.getDtBySql("select f_get_data_index() as c  from dual");
        data_index = dt_index.Rows[0][0].ToString();
        try
        {
            if (IF_FIRST == "4")
            {
                child_url = dt_A014.Rows[0]["A014_SQL"].ToString();
                DataTable dt_url = new DataTable();
                dt_url    = Fun.getDtBySql(child_url.Replace("[ROWID]", ROWID));
                child_url = dt_url.Rows[0][0].ToString();
                width_    = dt_url.Rows[0][1].ToString();
                height_   = dt_url.Rows[0][2].ToString();
            }
            if (IF_FIRST == "5")
            {
                child_url = dt_A014.Rows[0]["NEXT_DO"].ToString();
                exec_sql  = dt_A014.Rows[0]["A014_SQL"].ToString();

                dt_data = Fun.getDtBySql(child_url.Replace("[ROWID]", ROWID));
                int max_width  = 0;
                int max_height = 0;
                for (int i = 0; i < dt_data.Rows.Count; i++)
                {
                    string width  = dt_data.Rows[i]["width"].ToString();
                    string height = dt_data.Rows[i]["height"].ToString();
                    if (int.Parse(width) > max_width)
                    {
                        max_width = int.Parse(width);
                    }
                    max_height += int.Parse(height) + 25;
                }
                width_  = max_width.ToString();
                height_ = max_height.ToString();
            }
        }
        catch
        {
            Response.Write("<script> alert(\"" + BaseMsg.getMsg("M0014") + "\");winclose();</script>");
        }
    }
Esempio n. 18
0
        void C2G_PlayerPing(Player player, BaseMsg data)
        {
            var msg = data as Msg_C2G_PlayerPing;

            player?.SendUdp(EMsgSC.G2C_PlayerPing, new Msg_G2C_PlayerPing()
            {
                localId              = msg.localId,
                sendTimestamp        = msg.sendTimestamp,
                timeSinceServerStart = LTime.realtimeSinceStartupMS - _gameStartTimestampMs
            });
        }
Esempio n. 19
0
        private int DataReceiveCallBack(NumNetType nType, string strIp, int nPort, byte[] buffer, int isize)
        {
            try
            {
                switch (nType)
                {
                case NumNetType.Data:
                {
                    List <byte[]> listRec = adddata(buffer, strIp, nPort);
                    foreach (var va in listRec)
                    {
                        int len = 0; int serialn = 0; int pktype = 0; string re = ""; byte[] bres = null;
                        m_CmdBuild.MessageAnalysis(va, ref len, ref serialn, ref pktype, ref re, ref bres);
                        BaseMsg msg = new BaseMsg();
                        msg.FromIp   = strIp;
                        msg.FromPort = nPort;
                        msg.cmd      = pktype.ToString();
                        msg.Type     = MSGType.msgRequest;
                        msg.xml      = re;
                        msg.xmlbyte  = bres;
                        msg.Seq      = serialn;
                        //LogHelper.Trace($"Net Receive:{BitConverter.ToString(va)}:pktype={pktype};fromip:{strIp};fromport{nPort}");
                        m_PushMsgCallBack(msg);
                    }
                }
                break;

                case NumNetType.ClientConnect:
                {
                    //Console.WriteLine("ClientConnect ip ={0},port ={1}", strIp, nPort);
                    //BaseMsg msg = new BaseMsg();
                    //msg.FromIp = strIp;
                    //msg.FromPort = nPort;
                    //msg.Type = MSGType.msgNetConnect;
                    //m_PushMsgCallBack(msg);
                }
                break;

                case NumNetType.ClientClose:
                {
                    BaseMsg msg = new BaseMsg();
                    msg.FromIp   = strIp;
                    msg.FromPort = nPort;
                    msg.Type     = MSGType.msgNetClose;
                    m_PushMsgCallBack(msg);
                    m_ClientObj.bConnected = false;
                }
                break;
                }
            }
            catch (Exception) { }
            return(0);
        }
Esempio n. 20
0
 //广播
 public virtual void BrocatBuffer(byte[] msg)
 {
     foreach (RefreshObject refobj in this.GetVisibleList().Values)
     {
         BaseObject obj = refobj.obj;
         if (obj.type == OBJECTTYPE.PLAYER && obj.GetGameSession() != null)
         {
             BaseMsg data = new BaseMsg();
             data.Create(msg, obj.GetGamePackKeyEx());
             obj.SendData(data.GetBuffer());
         }
     }
 }
Esempio n. 21
0
        void OnPlayerQuit(Session session, BaseMsg message)
        {
            var player = session.GetBindInfo <Player>();

            if (player == null)
            {
                return;
            }
            _curCount--;
            Debug.Log("OnPlayerQuit count:" + _curCount);
            _id2Player.Remove(player.UserId);
            if (_curCount == 0)
            {
                _game = null;
            }
        }
Esempio n. 22
0
        private void KfHandler(BaseMsg baseMsg)
        {
            var msg = (KfEventMsg)baseMsg;

            //处理不同的会话事件
            switch (msg.Event)
            {
            case EventType.KF_CLOSE_SESSION:
                break;

            case EventType.KF_CREATE_SESSION:
                break;

            case EventType.KF_SWITCH_SESSION:
                break;
            }
        }
Esempio n. 23
0
        /// <summary>
        ///  发送命令
        /// </summary>
        /// <param name="req"></param>
        public bool Send(BaseMsg req)
        {
            if (req.MsgHeader.CommandType == CommandType.Connect)
            {
                return(false);
            }

            req.MsgHeader.SequenceId = GetNextSequenceId();

            var command = new CmppCommand()
            {
                Request = req
            };

            Option.CommandQueue.Enqueue(command);

            return(true);
        }
Esempio n. 24
0
        void C2G_PlayerInput(Player player, BaseMsg data)
        {
            if (State != EGameState.PartLoaded && State != EGameState.Playing)
            {
                return;
            }
            if (State == EGameState.PartLoaded)
            {
                Log("First input: game start playing");
                State = EGameState.Playing;
            }

            var input = data as Msg_PlayerInput;

#if DEBUG_SHOW_INPUT
            if (input.Commands != null && input.Commands?.Length > 0)
            {
                var cmd         = input.Commands[0];
                var playerInput = new Deserializer(cmd.content).Parse <Lockstep.Game.PlayerInput>();
                if (playerInput.Deg != 0 && (input.Tick < Tick))
                {
                    Debug.Log(
                        $"curTick{Tick} isOutdate{input.Tick < Tick} RecvInput actorID:{input.ActorId}  inputTick:{input.Tick}  move:{playerInput.Deg}");
                }
            }
#endif

            //Debug.Log($"RecvInput actorID:{input.ActorId} inputTick:{input.Tick} Tick{Tick}");
            if (input.Tick < Tick)
            {
                return;
            }

            var frame = GetOrCreateFrame(input.Tick);

            var id = input.ActorId;
            if (!_allNeedWaitInputPlayerIds.Contains(id))
            {
                _allNeedWaitInputPlayerIds.Add(id);
            }

            frame.Inputs[id] = input;
            _CheckBorderServerFrame(false);
        }
Esempio n. 25
0
        void QrLogin(BaseMsg baseMsg, string key)
        {
            var app = HttpContext.Current.Application;

            app.Lock();
            var logins    = app["logins"] as List <WxLogin>;
            var logininfo = logins.FirstOrDefault(l => l.key.ToString() == key);

            if (logininfo == null)
            {
                baseMsg.ResText(param, "不存在登陆信息");
            }
            else
            {
                logininfo.openid = baseMsg.FromUserName;
                HttpContext.Current.Response.Write("");
            }
            app.UnLock();
        }
Esempio n. 26
0
        void C2G_HashCode(Player player, BaseMsg data)
        {
            var hashInfo = data as Msg_HashCode;
            var id       = player.LocalId;

            for (int i = 0; i < hashInfo.HashCodes.Length; i++)
            {
                var code = hashInfo.HashCodes[i];
                var tick = hashInfo.StartTick + i;
                //Debug.Log($"tick: {tick} Hash {code}"  );
                if (_hashCodes.TryGetValue(tick, out HashCodeMatcher matcher1))
                {
                    if (matcher1 == null || matcher1.sendResult[id])
                    {
                        continue;
                    }

                    if (matcher1.hashCode != code)
                    {
                        OnHashMatchResult(tick, code, false);
                    }

                    matcher1.count          = matcher1.count + 1;
                    matcher1.sendResult[id] = true;
                    if (matcher1.IsMatchered)
                    {
                        OnHashMatchResult(tick, code, true);
                    }
                }
                else
                {
                    var matcher2 = new HashCodeMatcher(MaxPlayerCount);
                    matcher2.count          = 1;
                    matcher2.hashCode       = code;
                    matcher2.sendResult[id] = true;
                    _hashCodes.Add(tick, matcher2);
                    if (matcher2.IsMatchered)
                    {
                        OnHashMatchResult(tick, code, true);
                    }
                }
            }
        }
Esempio n. 27
0
        void OnNet_LoadingProgress(Player player, BaseMsg data)
        {
            if (State != EGameState.Loading)
            {
                return;
            }
            var msg = data as Msg_C2G_LoadingProgress;

            if (playerLoadingProgress == null)
            {
                playerLoadingProgress = new byte[MaxPlayerCount];
            }

            playerLoadingProgress[player.LocalId] = msg.Progress;

            //Log($"palyer{player.LocalId} Load {msg.Progress}");

            BorderTcp(EMsgSC.G2C_LoadingProgress, new Msg_G2C_LoadingProgress()
            {
                Progress = playerLoadingProgress
            });

            if (msg.Progress < 100)
            {
                return;
            }
            var isDone = true;

            foreach (var progress in playerLoadingProgress)
            {
                if (progress < 100)
                {
                    isDone = false;
                    break;
                }
            }

            if (isDone)
            {
                OnFinishedLoaded();
            }
        }
Esempio n. 28
0
        public void getFundsBaseMessage()
        {
            try
            {
                byte[] buf = new WebClient().DownloadData(FUND_BASE_MESSAGE_URL);
                string html = Encoding.UTF8.GetString(buf);

                string basePattern = "\\[\"[0-9]*\",\"[A-Z]*\",\"[^,]*\",\"[^,]*\"\\]";
                MatchCollection matches = Regex.Matches(html, basePattern);

                foreach (var fundBaseMessage in matches)
                {
                    BaseMsg aFund = new BaseMsg();
                    string codePattern = "(?<=\\[\")[0-9]*(?=\",\"[A-Z]*\",\"[^,]*\",\"[^,]*\"\\])";
                    MatchCollection ms = Regex.Matches(fundBaseMessage.ToString(), codePattern);
                    Debug.Assert(ms.Count != 0);
                    aFund.code = ms[0].ToString();

                    string abbreviationPattern = "(?<=\\[\"[0-9]*\",\")[A-Z]*(?=\",\"[^,]*\",\"[^,]*\"\\])";
                    ms = Regex.Matches(fundBaseMessage.ToString(), abbreviationPattern);
                    Debug.Assert(ms.Count != 0);
                    aFund.abbreviation = ms[0].ToString();

                    string namePattern = "(?<=\\[\"[0-9]*\",\"[A-Z]*\",\")[^,]*(?=\",\"[^,]*\"\\])";
                    ms = Regex.Matches(fundBaseMessage.ToString(), namePattern);
                    Debug.Assert(ms.Count != 0);
                    aFund.name = ms[0].ToString();

                    string typePattern = "(?<=\\[\"[0-9]*\",\"[A-Z]*\",\"[^,]*\",\")[^,]*(?=\"\\])";
                    ms = Regex.Matches(fundBaseMessage.ToString(), typePattern);
                    Debug.Assert(ms.Count != 0);
                    aFund.type = ms[0].ToString();

                    m_funds.Add(aFund);
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("网页请求异常,详细信息:" + ex.ToString());
            }
        }
Esempio n. 29
0
        void OnNetMsg(Session session, ushort opcode, BaseMsg msg)
        {
            var type = (EMsgSC)opcode;

            switch (type)
            {
            //login
            // case EMsgSC.L2C_JoinRoomResult:
            case EMsgSC.C2L_JoinRoom:
                OnPlayerConnect(session, msg);
                return;

            case EMsgSC.C2L_LeaveRoom:
                OnPlayerQuit(session, msg);
                return;
                //room
            }
            var player = session.GetBindInfo <Player>();

            _game?.OnNetMsg(player, opcode, msg);
        }
Esempio n. 30
0
        public bool Serialize <T>(ref byte[] buffer, ref int allLength, T instance, int msgId, int playerId)
        {
            MemoryStream stream = new MemoryStream();

            ProtoBuf.Serializer.Serialize <T>(stream, instance);

            BaseMsg baseMsg = new BaseMsg();

            baseMsg.id       = msgId;
            baseMsg.playerId = playerId;
            baseMsg.msgData  = stream.ToArray();


            MemoryStream baseStream = new MemoryStream(buffer);

            baseStream.Position = 6;//head
            ProtoBuf.Serializer.Serialize(baseStream, baseMsg);
            allLength = (int)baseStream.Position;
            int bodyLength = allLength - 6;

            if (bodyLength <= 0)
            {
                return(false);
            }

            byte[] header = new byte[6];
            byte[] tmp    = BigEndianUtil.ToBytes(NHNet.MSG_TYPE_DATA);
            Array.Copy(tmp, 0, header, 0, 2);
            byte[] tmp1 = BigEndianUtil.ToBytes(bodyLength);
            Array.Copy(tmp1, 0, header, 2, 4);


            baseStream.Position = 0;
            BinaryWriter writer = new BinaryWriter(baseStream);

            writer.Write(header, 0, header.Length);

            return(true);
        }
Esempio n. 31
0
        public static Packet DeserializeFrom(byte[] buf)
        {
            if (buf.Length < 2)
            {
                return(null);
            }
            MsgType opcode = (MsgType)buf[0];

            byte[] data = new byte[buf.Length - 1];
            Array.Copy(buf, 1, data, 0, buf.Length - 1);

            BaseMsg msg = null;

            switch (opcode)
            {
            case MsgType.S2C_Ping: msg = BaseFormater.FromByte <Msg_S2C_Ping>(data); break;

            case MsgType.C2S_Ping: msg = BaseFormater.FromByte <Msg_C2S_Ping>(data); break;

            default: break;
            }

            return(new Packet(opcode, msg));
        }