Esempio n. 1
0
 // 发送消息
 public void Send(INbsSerializer objMsg)
 {
     if (Connected)
     {
         ListSend.Enqueue(objMsg);
     }
 }
Esempio n. 2
0
 public static void SendByServerID(int serverID, INbsSerializer objMsg)
 {
     if (GameServerLinkManager.DictClientLink.TryGetValue(serverID, out var world))
     {
         world.Send(objMsg);
     }
 }
Esempio n. 3
0
        private void button9_Click(object sender, EventArgs e)
        {
            textBox7.Text = "";
            var type = Assembly.Load("ServerBase").GetType("ServerBase.Protocol." + textBox6.Text);

            if (type == null)
            {
                MessageBox.Show("协议类型错误");
                return;
            }
            INbsSerializer msg = (INbsSerializer)Activator.CreateInstance(type, true);

            var propertys = type.GetFields();
            int count     = dataGridView7.Rows.Count;

            for (int i = 0; i < count; i++)
            {
                var name  = dataGridView7.Rows[i].Cells[1].Value;
                var field = propertys.FirstOrDefault(p => p.Name.Equals(name));
                if (field != null)
                {
                    field.SetValue(msg, Convert.ChangeType(dataGridView7.Rows[i].Cells[2].Value, field.FieldType));
                }
            }
            ClientNetSingle.Send(msg);
            msgString = textBox6.Text.Replace("C2G", "G2C");
        }
Esempio n. 4
0
        public static void SendAll(INbsSerializer objMsg)
        {
            var nbs = objMsg.Serialize();

            foreach (var session in BaseServerInfo.AllSessions.Values)
            {
                Send(session, objMsg);
            }
        }
        //发送给游戏服务器消息
        public static void SendToGame(int serverID, INbsSerializer objMsg)
        {
            var nbs = objMsg.Serialize();

            if (DictServerLinkGame.TryGetValue(serverID, out var serverlink))
            {
                var session = BaseServerInfo.AppServer.GetSessionByID(serverlink.SessionID);
                BaseDispatch.Send(session, objMsg);
            }
        }
        //广播给游戏服务器消息
        public static void BoardcastToGame(INbsSerializer objMsg)
        {
            var nbs = objMsg.Serialize();

            foreach (var item in DictServerLinkGame.Values)
            {
                var session = BaseServerInfo.AppServer.GetSessionByID(item.SessionID);
                BaseDispatch.Send(session, objMsg);
            }
        }
 public static void SendMsg(INbsSerializer msg, List <long> puids)
 {
     foreach (var puid in puids)
     {
         if (Dispatcher.DictPuidSession.TryGetValue(puid.ToString(), out var session))
         {
             //session.Send(msg);
             BaseDispatch.Send(session, msg);
         }
     }
 }
Esempio n. 8
0
 public static void SendToGame(INbsSerializer objMsg, int serverID = 12011)
 {
     if (GateServerLinkManager.DictServerLinkGame.TryGetValue(serverID, out var game))
     {
         game.Send(objMsg);
     }
     else
     {
         loger.Warn($"发送错误,游戏服务器ID->  {serverID}");
     }
 }
Esempio n. 9
0
 public static void SendByServerID(int serverID, INbsSerializer objMsg)
 {
     if (GateServerLinkManager.DictServerLinkLogin.TryGetValue(serverID, out var login))
     {
         login.Send(objMsg);
     }
     else if (GateServerLinkManager.DictServerLinkGame.TryGetValue(serverID, out var game))
     {
         game.Send(objMsg);
     }
 }
Esempio n. 10
0
 public static void SendToLogin(INbsSerializer objMsg, int serverID = 12101)
 {
     if (GateServerLinkManager.DictServerLinkLogin.TryGetValue(serverID, out var login))
     {
         login.Send(objMsg);
     }
     else
     {
         loger.Warn($"发送错误,登录服务器ID->  {serverID}");
     }
 }
 /// <summary>
 /// 发送消息(通过服务器ID)
 /// </summary>
 /// <param name="serverid"></param>
 /// <param name="nbs"></param>
 public static void SendToServer(int serverid, INbsSerializer objMsg)
 {
     try
     {
         var lk = GameServerLinkManager.DictClientLink[serverid];
         lk.Send(objMsg.Serialize());
     }
     catch
     {
         loger.Error($"发送消息到服务器 {serverid} 失败");
     }
 }
        /// <summary>
        /// 发送消息(通过服务器类型)
        /// </summary>
        /// <param name="linktype"></param>
        /// <param name="nbs"></param>
        public static void SendToType(int linktype, INbsSerializer objMsg)
        {
            var nbs = objMsg.Serialize();

            foreach (var item in GameServerLinkManager.DictClientLink.Values)
            {
                if (item.LinkType == linktype)
                {
                    item.Send(nbs);
                }
            }
        }
Esempio n. 13
0
 public static void SendAll(LunarSession session, INbsSerializer objMsg, long selfid = 0)
 {
     foreach (var item in DictPlayerOnline.Values)
     {
         if (item.Id == selfid)
         {
             continue;
         }
         ((ProtocolMsgBase)objMsg).RspPuids.Add(item.Id);
     }
     ((ProtocolMsgBase)objMsg).Puid = selfid;
     if (((ProtocolMsgBase)objMsg).RspPuids.Count > 0 || ((ProtocolMsgBase)objMsg).Puid != 0)
     {
         session.SendMerge(objMsg);
     }
 }
Esempio n. 14
0
        public void SendMerge(INbsSerializer msg)
        {
            if (msg is G2E_Game_PlayerXYOther)
            {
                var msgPlayerXY = msg as G2E_Game_PlayerXYOther;

                var merge = ListSendMerge.FirstOrDefault(p => p.Puid == msgPlayerXY.Puid && p.PlayerXY.Uid == msgPlayerXY.PlayerXY.Uid);
                if (merge != null)
                {
                    merge = msgPlayerXY;
                }
                else
                {
                    ListSendMerge.Enqueue(msgPlayerXY);
                }
            }
        }
Esempio n. 15
0
 /// <summary>
 /// 立即发送消息(通过session)
 /// </summary>
 public static void Send(LunarSession session, INbsSerializer objMsg)
 {
     try
     {
         if (session.Connected)
         {
             var    nbs    = objMsg.Serialize();
             ushort id     = nbs.ReadProtocolHeader();
             ushort result = nbs.ReadProtocolResult();
             loger.Info($"发送{(EServerType)session.SessionType}数据包 协议号:{(EProtocolId)id}->{id} 错误码:{(EProtocolResult)result}->{result} 长度:{nbs.Length}");
             session.Send(nbs.BYTES, 0, nbs.Length);
         }
     }
     catch (Exception ex)
     {
         loger.Fatal("立即发送消息失败", ex);
     }
 }
Esempio n. 16
0
        private void textBox6_TextChanged(object sender, EventArgs e)
        {
            var type = Assembly.Load("ServerBase").GetType("ServerBase.Protocol." + textBox6.Text);

            if (type == null)
            {
                return;
            }
            var dgv = dataGridView7;

            dgv.Rows.Clear();
            try
            {
                INbsSerializer msg = (INbsSerializer)Activator.CreateInstance(type, true);

                var propertys = type.GetFields();
                foreach (var fieldInfo in propertys)
                {
                    if (fieldInfo.Name == "_protocol" || fieldInfo.Name == "_result" ||
                        fieldInfo.Name == "Pin" || fieldInfo.Name == "Puid" ||
                        fieldInfo.Name == "Shuttle")
                    {
                        continue;
                    }
                    var value = fieldInfo.GetValue(msg);
                    var row   = new List <object>();
                    var objs  = fieldInfo.GetCustomAttributes(typeof(DescAttribute), true);
                    row.Add(((DescAttribute)objs[0]).DescStr);
                    row.Add(fieldInfo.Name);
                    row.Add(value);
                    dgv.Rows.Add(row.ToArray());
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show($"协议错误!{ex}");
                return;
            }
        }
Esempio n. 17
0
 //向登录服务器发送数据
 public void Send(INbsSerializer objMsg)
 {
     Send(objMsg.Serialize());
 }
 /// <summary>
 /// 发送消息给世界服务器
 /// </summary>
 /// <param name="nbs"></param>
 public static void SendToWorld(INbsSerializer objMsg)
 {
     SendToType((int)EServerType.世界, objMsg);
 }
 /// <summary>
 /// 发送消息给登陆服务器
 /// </summary>
 /// <param name="nbs"></param>
 public static void SendToLogin(INbsSerializer objMsg)
 {
     SendToType((int)EServerType.登陆, objMsg);
 }