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(); } }
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 }); } }
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); } }
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(); }
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(); }
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); } }
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); } }
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(); } } }
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); } }
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); } }
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()); } }