예제 #1
0
        /// <summary>
        /// 数据接收
        /// </summary>
        public void OnRequestReceived(ClientSession session, BinaryRequestInfo requestInfo)
        {
            ByteBuffer buffer    = new ByteBuffer(requestInfo.Body);
            int        commandId = buffer.ReadShort();

            Message.Protocal c         = (Message.Protocal)commandId;
            string           className = "LibServer.GameServer.Message." + c;

            Console.WriteLine("OnRequestReceived--->>>" + className);

            Type t = Type.GetType(className);

            Message.IMessage obj = (Message.IMessage)Activator.CreateInstance(t);
            if (obj != null)
            {
                obj.OnMessage(session, buffer);
            }
            obj = null; t = null;   //释放内存
        }
예제 #2
0
 /// <summary>
 /// 发送消息
 /// </summary>
 public static void SendMessage(ClientSession session, Message.Protocal protocal, ByteBuffer buffer)
 {
     byte[] message = buffer.ToBytes();
     using (MemoryStream ms = new MemoryStream()) {
         ms.Position = 0;
         BinaryWriter writer     = new BinaryWriter(ms);
         ushort       protocalId = (ushort)protocal;
         ushort       msglen     = (ushort)(message.Length + 2);
         writer.Write(msglen);
         writer.Write(protocalId);
         writer.Write(message);
         writer.Flush();
         if (session != null && session.Connected)
         {
             byte[] payload = ms.ToArray();
             session.Send(payload, 0, payload.Length);
         }
         else
         {
             Console.WriteLine("client.connected----->>false");
         }
     }
 }