Exemplo n.º 1
0
        static void  DataOn(ReadBytes read, IFiberRw <string> fiberRw)
        {
            var cmd = read.ReadInt32();
            var p1  = read.ReadInt32();
            var p2  = read.ReadInt64();
            var p3  = read.ReadDouble();
            var p4  = read.ReadSingle();
            var p5  = read.ReadBoolean();
            var p6  = read.ReadBoolean();
            var p7  = read.ReadString();
            var p8  = read.ReadMemory();
            var p9  = read.ReadInt16();


            // var p10 = read.ReadObject<List<Guid>>();
            // read.Dispose();


            using (WriteBytes writeBytes = new WriteBytes(fiberRw))
            {
                writeBytes.WriteLen();
                writeBytes.Cmd(cmd);
                writeBytes.Write(p1);
                writeBytes.Write(p2);
                writeBytes.Write(p3);
                writeBytes.Write(p4);
                writeBytes.Write(p5);
                writeBytes.Write(p6);
                writeBytes.Write(p7);
                writeBytes.Write(p8);
                writeBytes.Write(p9);
                //writeBytes.Write(p10);
                writeBytes.Flush();
            }
        }
Exemplo n.º 2
0
        protected virtual void ReadResult(ReadBytes read)
        {
            var id = read.ReadInt64();

            if (read.ReadBoolean()) //is error
            {
                AsyncBackResult(new Result()
                {
                    Id       = id,
                    ErrorId  = (read.ReadInt32()),
                    ErrorMsg = read.ReadString()
                });
            }
            else
            {
                var           count = (read.ReadInt32());
                List <byte[]> args  = new List <byte[]>(count);
                for (int i = 0; i < count; i++)
                {
                    args.Add(read.ReadArray());
                }

                AsyncBackResult(new Result(args)
                {
                    Id = id
                });
            }
        }
Exemplo n.º 3
0
        protected virtual void ReadResult(ReadBytes read)
        {
            var id = read.ReadInt64();

            if (id.HasValue)
            {
                if ((read.ReadBoolean()).Value) //is error
                {
                    AsyncBackResult(new Result()
                    {
                        Id       = id.Value,
                        ErrorId  = (read.ReadInt32()).Value,
                        ErrorMsg = read.ReadString()
                    });
                }
                else
                {
                    var           count = (read.ReadInt32()).Value;
                    List <byte[]> args  = new List <byte[]>(count);
                    for (int i = 0; i < count; i++)
                    {
                        args.Add(read.ReadArray());
                    }

                    AsyncBackResult(new Result(args)
                    {
                        Id = id.Value
                    });
                }
            }
            else
            {
                throw new NetxException($"data error:2500", ErrorType.ReadErr);
            }
        }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            #region DES

            BufferFormat fan = new BufferFormat(1000, new FDataExtraHandle((o) =>
            {
                return DES.EncryptDES(o, DESkeys, "hello word");
            }));

            fan.AddItem(true);
            fan.AddItem("abc");
            fan.AddItem(123);

            byte[] data = fan.Finish();


            ReadBytes read = new ReadBytes(data, 4, -1, new RDataExtraHandle((o) =>
                {
                    return DES.DecryptDES(o, DESkeys, "hello word");
                }));

            int lengt;
            int cmd;
            bool var1;
            string var2;
            int var3;

            if (read.IsDataExtraSuccess &&
                read.ReadInt32(out lengt) &&
                lengt == read.Length &&
                read.ReadInt32(out cmd) &&
                read.ReadBoolean(out var1) &&
                read.ReadString(out var2) &&
                read.ReadInt32(out var3))
            {
                Console.WriteLine("This DES-> Length:{0} Cmd:{1} var1:{2} var2:{3} var3:{4}", lengt, cmd, var1, var2, var3);

            }
            #endregion

            //AES测试
            AEStest();

            //数据压缩
            Deflatetest();



            Console.ReadLine();
        }
Exemplo n.º 5
0
        static void Main(string[] args)
        {
            #region DES

            BufferFormat fan = new BufferFormat(1000, new FDataExtraHandle((o) =>
            {
                return(DES.EncryptDES(o, DESkeys, "hello word"));
            }));

            fan.AddItem(true);
            fan.AddItem("abc");
            fan.AddItem(123);

            byte[] data = fan.Finish();


            ReadBytes read = new ReadBytes(data, 4, -1, new RDataExtraHandle((o) =>
            {
                return(DES.DecryptDES(o, DESkeys, "hello word"));
            }));

            int    lengt;
            int    cmd;
            bool   var1;
            string var2;
            int    var3;

            if (read.IsDataExtraSuccess &&
                read.ReadInt32(out lengt) &&
                lengt == read.Length &&
                read.ReadInt32(out cmd) &&
                read.ReadBoolean(out var1) &&
                read.ReadString(out var2) &&
                read.ReadInt32(out var3))
            {
                Console.WriteLine("This DES-> Length:{0} Cmd:{1} var1:{2} var2:{3} var3:{4}", lengt, cmd, var1, var2, var3);
            }
            #endregion

            //AES测试
            AEStest();

            //数据压缩
            Deflatetest();



            Console.ReadLine();
        }
Exemplo n.º 6
0
        static void Deflatetest()
        {
            BufferFormat fan = new BufferFormat(1000, new FDataExtraHandle((o) =>
            {
                return(Deflate.Compress(o));
            }));

            fan.AddItem(true);
            fan.AddItem("abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc");
            fan.AddItem(123);

            byte[] data = fan.Finish();


            ReadBytes read = new ReadBytes(data, 4, -1, new RDataExtraHandle((o) =>
            {
                return(Deflate.Decompress(o));
            }));

            int    lengt;
            int    cmd;
            bool   var1;
            string var2;
            int    var3;

            if (read.IsDataExtraSuccess &&
                read.ReadInt32(out lengt) &&
                lengt == read.Length &&
                read.ReadInt32(out cmd) &&
                read.ReadBoolean(out var1) &&
                read.ReadString(out var2) &&
                read.ReadInt32(out var3))
            {
                Console.WriteLine("压缩前长度:{0}", read.Data.Length);
                Console.WriteLine("压缩后长度:{0}", read.Length);
                Console.WriteLine("This Deflate-> Length:{0} Cmd:{1} var1:{2} var2:{3} var3:{4}", lengt, cmd, var1, var2, var3);
            }
        }
Exemplo n.º 7
0
        static void AEStest()
        {
            BufferFormat fan = new BufferFormat(1000, new FDataExtraHandle((o) =>
            {
                return(AES.AESEncrypt(o, AESkeys, "hello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello word"));
            }));

            fan.AddItem(true);
            fan.AddItem("abc");
            fan.AddItem(123);

            byte[] data = fan.Finish();


            ReadBytes read = new ReadBytes(data, 4, -1, new RDataExtraHandle((o) =>
            {
                return(AES.AESDecrypt(o, AESkeys, "hello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello word"));
            }));

            int    lengt;
            int    cmd;
            bool   var1;
            string var2;
            int    var3;

            if (read.IsDataExtraSuccess &&
                read.ReadInt32(out lengt) &&
                lengt == read.Length &&
                read.ReadInt32(out cmd) &&
                read.ReadBoolean(out var1) &&
                read.ReadString(out var2) &&
                read.ReadInt32(out var3))
            {
                Console.WriteLine("This AES-> Length:{0} Cmd:{1} var1:{2} var2:{3} var3:{4}", lengt, cmd, var1, var2, var3);
            }
        }
Exemplo n.º 8
0
        private async void SocketClient_BinaryInput(ISocketClient client, ISockAsyncEventAsClient socketAsync)
        {
            var fiberRw = await GetFiberRw(socketAsync);

            try
            {
                if (fiberRw == null)
                {
                    client.SetConnected(false, "ssl error");
                    return;
                }

                IWrite = fiberRw;

                if (!isConnect)
                {
                    await SendVerify(); //发送KEY和sessionid验证

                    using ReadBytes read = new ReadBytes(fiberRw);
                    await read.Init();

                    switch (read.ReadInt32())
                    {
                    case 1000:     //key check
                    {
                        var iserror = read.ReadBoolean();

                        if (!iserror)
                        {
                            Log.Trace(read.ReadString());

                            if (read.Memory.Length >= 1)
                            {
                                if (read.ReadByte() == 1)
                                {
                                    Mode = 1;
                                }
                            }

                            isConnect = true;
                            client.SetConnected();
                            await GetSessionId();
                            await ReadIng(fiberRw);
                        }
                        else
                        {
                            var msg = read.ReadString();
                            Log.Info(msg);
                            client.SetConnected(false, msg);
                        }
                    }
                    break;
                    }
                }

                client.ShutdownBoth();
            }
            catch (Exception er)
            {
                if (!client.IsConnect)
                {
                    client.SetConnected(false, er.Message);
                }
                else
                {
                    Log.Error(er);
                    client.ShutdownBoth();
                }
            }
        }
Exemplo n.º 9
0
        static void Deflatetest()
        {
            BufferFormat fan = new BufferFormat(1000, new FDataExtraHandle((o) =>
            {
                return Deflate.Compress(o);
            }));

            fan.AddItem(true);
            fan.AddItem("abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc");
            fan.AddItem(123);

            byte[] data = fan.Finish();


            ReadBytes read = new ReadBytes(data, 4, -1, new RDataExtraHandle((o) =>
            {
                 return Deflate.Decompress(o);
            }));

            int lengt;
            int cmd;
            bool var1;
            string var2;
            int var3;

            if (read.IsDataExtraSuccess &&
                read.ReadInt32(out lengt) &&
                lengt == read.Length &&
                read.ReadInt32(out cmd) &&
                read.ReadBoolean(out var1) &&
                read.ReadString(out var2) &&
                read.ReadInt32(out var3))
            {
                Console.WriteLine("压缩前长度:{0}", read.Data.Length);
                Console.WriteLine("压缩后长度:{0}", read.Length);
                Console.WriteLine("This Deflate-> Length:{0} Cmd:{1} var1:{2} var2:{3} var3:{4}", lengt, cmd, var1, var2, var3);

            }
        }
Exemplo n.º 10
0
        static void AEStest()
        {
            BufferFormat fan = new BufferFormat(1000, new FDataExtraHandle((o) =>
            {
                return AES.AESEncrypt(o, AESkeys, "hello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello word");
            }));

            fan.AddItem(true);
            fan.AddItem("abc");
            fan.AddItem(123);

            byte[] data = fan.Finish();


            ReadBytes read = new ReadBytes(data, 4, -1, new RDataExtraHandle((o) =>
            {
                return AES.AESDecrypt(o, AESkeys, "hello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello wordhello word");
            }));

            int lengt;
            int cmd;
            bool var1;
            string var2;
            int var3;

            if (read.IsDataExtraSuccess&&
                read.ReadInt32(out lengt) &&
                lengt == read.Length &&
                read.ReadInt32(out cmd) &&
                read.ReadBoolean(out var1) &&
                read.ReadString(out var2) &&
                read.ReadInt32(out var3))
            {
                Console.WriteLine("This AES-> Length:{0} Cmd:{1} var1:{2} var2:{3} var3:{4}", lengt, cmd, var1, var2, var3);

            }
        }
Exemplo n.º 11
0
        static void DataOn(byte[] data, SocketAsyncEventArgs e)
        {
            Console.WriteLine("ThreadId:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
            try
            {
                //建立一个读取数据包的类 参数是数据包
                //这个类的功能很强大,可以读取数据包的数据,并可以把你发送过来的对象数据,转换对象引用

                ReadBytes read = new ReadBytes(data);

                int lengt; //数据包长度,用于验证数据包的完整性
                int cmd;   //数据包命令类型

                //注意这里一定要这样子写,这样子可以保证所有你要度的数据是完整的,如果读不出来 Raed方法会返回FALSE,从而避免了错误的数据导致崩溃
                if (read.ReadInt32(out lengt) && read.Length == lengt && read.ReadInt32(out cmd))
                {  //read.Read系列函数是不会产生异常的
                    //根据命令读取数据包
                    switch (cmd)
                    {
                    case 1000:
                    {
                        int    version = read.ReadInt32();
                        long   data1   = read.ReadInt64();
                        float  data2   = read.ReadFloat();
                        double db1     = read.ReadDouble();
                        bool   b1      = read.ReadBoolean();
                        bool   b2      = read.ReadBoolean();
                        short  s1      = read.ReadInt16();
                        byte   sb1     = read.ReadByte();
                        string str1    = read.ReadString();
                        string str2    = read.ReadString();
                        byte[] datax   = read.ReadByteArray();

                        TestData tm2 = read.ReadObject <TestData>();

                        Console.WriteLine("int:" + version);
                        Console.WriteLine("long:" + data1);
                        Console.WriteLine("float:" + data2);
                        Console.WriteLine("double:" + db1);
                        Console.WriteLine("bool TRUE:" + b1);
                        Console.WriteLine("bool False:" + b2);
                        Console.WriteLine("short:" + s1);
                        Console.WriteLine("byte:" + sb1);
                        Console.WriteLine("string:" + str1);
                        Console.WriteLine("string:" + str2);
                        Console.WriteLine("bytes lengt:" + datax.Length);

                        BufferFormat buffer = new BufferFormat(1000);
                        buffer.AddItem(version);
                        buffer.AddItem(data1);
                        buffer.AddItem(data2);
                        buffer.AddItem(db1);
                        buffer.AddItem(b1);
                        buffer.AddItem(b2);
                        buffer.AddItem(s1);
                        buffer.AddItem(sb1);
                        buffer.AddItem(str1);
                        buffer.AddItem(str2);
                        buffer.AddItem(datax);


                        TestData tmx = new TestData()
                        {
                            Id   = 1,
                            Data = new List <string>()
                            {
                                "123123", "32123123"
                            },
                            Data2 = new List <Test2>()
                            {
                                new Test2 {
                                    A = 1, B = 2
                                }, new Test2 {
                                    A = 3, B = 4
                                }
                            }
                        };

                        buffer.AddItem(tmx);

                        server.SendData(e.AcceptSocket, buffer.Finish());
                    }
                    break;
                    }
                }
            }
            catch (Exception er)
            {
                Console.WriteLine(er.ToString());
            }
        }