Exemple #1
0
        private void ReceivedPacket(Stream stream)
        {
            DataPacketBase dataPacketBase = null;
            BinaryReader   br             = null;

            try
            {
                br = new BinaryReader(stream, Encoding.UTF8);
                string packetType = br.ReadString();
                dataPacketBase = GetDataPacketBase(packetType);
                if (dataPacketBase == null)
                {
                    OnInvalidPacketReceived();
                    return;
                }
            }
            catch (Exception ex)
            {
                OnInvalidPacketReceived();
            }
            if (dataPacketBase.Decoder(br) == true)
            {
                if (DataPacketReceived != null)
                {
                    DataPacketReceived(this, dataPacketBase);
                }
            }
        }
Exemple #2
0
        private DataPacketBase CreateDataPack(Type dataPacketType)
        {
            ConstructorInfo constructor = dataPacketType.GetConstructor(Type.EmptyTypes);

            if (constructor == null)
            {
                throw new InvalidOperationException("数据包必须有默认构造函数。");
            }
            DataPacketBase packet = constructor.Invoke(null) as DataPacketBase;

            return(packet);
        }
Exemple #3
0
        private DataPacketBase GetDataPacketBase(string packetType)
        {
            Type type = null;

            if (!dicType.TryGetValue(packetType, out type))
            {
                return(null);
            }
            DataPacketBase dataPacketBase = CreateDataPack(type);

            dataPacketBase.PacketType = packetType;
            return(dataPacketBase);
        }
Exemple #4
0
 internal void Send(DataPacketBase pack)
 {
     try
     {
         this.Send(pack.Encoder());
     }
     catch (Exception ex)
     {
         OnRaiseErrored(new RaiseErrorEvent()
         {
             ErrorMessage = ex.Message
         });
     }
 }
Exemple #5
0
 public void Send(DataPacketBase e, IPEndPoint ipe)
 {
     service.SendToAsync(socketPool.Pop());
 }