Esempio n. 1
0
 public static void BeginReadPacket(Socket skt, ClientProcessor psr, Action<Packet> callback, Action failure)
 {
     byte[] n = new byte[5];
     skt.BeginReceive(n, 0, 5, 0, ar =>
     {
         try
         {
             byte[] x = (byte[])ar.AsyncState;
             int len = IPAddress.NetworkToHostOrder(BitConverter.ToInt32(x, 0));
             if (len == 0)
             {
                 failure();
                 return;
             }
             len -= 5;
             byte id = x[4];
             Packet packet = Packets[(PacketID)id].CreateInstance();
             byte[] content = new byte[len];
             if (len > 0)
                 skt.Receive(content);
             packet.Read(psr, new NReader(new MemoryStream(packet.Crypt(psr, content))));
             callback(packet);
         }
         catch { failure(); }
     }, n);
 }
Esempio n. 2
0
 public static Packet ReadPacket(NReader rdr, ClientProcessor psr)
 {
     int len = rdr.ReadInt32() - 5;
     byte id = rdr.ReadByte();
     Packet packet = Packets[(PacketID)id].CreateInstance();
     byte[] content = rdr.ReadBytes(len);
     packet.Read(psr, new NReader(new MemoryStream(packet.Crypt(psr, content))));
     return packet;
 }
Esempio n. 3
0
        public static void WritePacket(NWriter wtr, Packet pkt, ClientProcessor psr)
        {
            MemoryStream s = new MemoryStream();
            pkt.Write(psr, new NWriter(s));

            byte[] content = s.ToArray();
            content = pkt.Crypt(psr, content);
            wtr.Write(content.Length + 5);
            wtr.Write((byte)pkt.ID);
            wtr.Write(content);
        }
Esempio n. 4
0
        public byte[] Write(ClientProcessor psr)
        {
            var s = new MemoryStream();
            Write(psr, new NWriter(s));

            var content = s.ToArray();
            var ret = new byte[5 + content.Length];
            content = Crypt(psr, content, content.Length);
            Buffer.BlockCopy(BitConverter.GetBytes(IPAddress.HostToNetworkOrder(ret.Length)), 0, ret, 0, 4);
            ret[4] = (byte) ID;
            Buffer.BlockCopy(content, 0, ret, 5, content.Length);
            return ret;
        }
Esempio n. 5
0
        static void Listen(IAsyncResult ar)
        {
            try
            {
                Socket skt = svrSkt.EndAccept(ar);
                svrSkt.BeginAccept(Listen, null);

                var psr = new ClientProcessor(skt);
                psr.BeginProcess();
            }
            catch (ObjectDisposedException)
            {
            }
        }
Esempio n. 6
0
 protected abstract void Read(ClientProcessor psr, NReader rdr);
Esempio n. 7
0
 public void Read(ClientProcessor psr, byte[] body, int len)
 {
     Read(psr, new NReader(new MemoryStream(Crypt(psr, body, len))));
 }
Esempio n. 8
0
 public abstract byte[] Crypt(ClientProcessor psr, byte[] dat, int len);
 public NetworkHandler(ClientProcessor parent, Socket skt)
 {
     this.parent = parent;
     this.skt = skt;
 }
Esempio n. 10
0
 public abstract byte[] Crypt(ClientProcessor psr, byte[] dat, int len);
Esempio n. 11
0
 protected override void Read(ClientProcessor psr, NReader rdr)
 {
 }
Esempio n. 12
0
 private static void Listen(IAsyncResult ar)
 {
     Socket skt = null;
     try
     {
         skt = svrSkt.EndAccept(ar);
     }
     catch (ObjectDisposedException)
     {
     }
     try
     {
         svrSkt.BeginAccept(Listen, null);
     }
     catch (ObjectDisposedException)
     {
     }
     if (skt != null)
     {
         var psr = new ClientProcessor(skt);
         psr.BeginProcess();
     }
 }
Esempio n. 13
0
 protected abstract void Write(ClientProcessor psr, NWriter wtr);
Esempio n. 14
0
 protected abstract void Read(ClientProcessor psr, NReader rdr);
Esempio n. 15
0
 public void Read(ClientProcessor psr, byte[] body, int len)
 {
     Read(psr, new NReader(new MemoryStream(Crypt(psr, body, len))));
 }
Esempio n. 16
0
 protected abstract void Write(ClientProcessor psr, NWriter wtr);
Esempio n. 17
0
 protected override void Read(ClientProcessor psr, NReader rdr)
 {
 }
Esempio n. 18
0
 public override byte[] Crypt(ClientProcessor psr, byte[] dat, int len)
 {
     return dat;
 }
Esempio n. 19
0
 protected override void Write(ClientProcessor psr, NWriter wtr)
 {
 }
Esempio n. 20
0
 protected override void Write(ClientProcessor psr, NWriter wtr)
 {
 }
Esempio n. 21
0
 public override byte[] Crypt(ClientProcessor psr, byte[] dat, int len)
 {
     return(dat);
 }