zoukankan      html  css  js  c++  java
  • cross socket和msgpack的数据序列和还原

    cross socket和msgpack的数据序列和还原

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      var pack: TSimpleMsgPack := TSimpleMsgPack.Create;
      pack.ForcePathObject('sql').AsString := '测试';
      IdTCPClient1.IOHandler.Write(tidbytes(pack.EncodeToBytes));  //发送TBytes
    end;
    
    procedure TcrossTcp.OnReceived(Sender: TObject; AConnection: ICrossConnection; ABuf: Pointer; ALen: Integer);
    begin
      var b: tbytes;
      SetLength(b, ALen);
      Move(ABuf^, b[0], ALen); // 还原TBytes
      var pack: TSimpleMsgPack := TSimpleMsgPack.Create;
      pack.DecodeFromBytes(b);
      Writeln(pack.ForcePathObject('sql').AsString);
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      var pack: TSimpleMsgPack := TSimpleMsgPack.Create;
      pack.ForcePathObject('sql').AsString := '测试';
      var ms: TMemoryStream := TMemoryStream.Create;
      pack.EncodeToStream(ms);
      ms.Position := 0;
      IdTCPClient1.IOHandler.Write(ms, ms.Size); //发送流
    end;
    
    procedure TcrossTcp.OnReceived(Sender: TObject; AConnection: ICrossConnection; ABuf: Pointer; ALen: Integer);
    begin
      var ms: TMemoryStream := TMemoryStream.Create;
      ms.Size := ALen;
      ms.Write(ABuf^, ALen);//还原流
      var pack: TSimpleMsgPack := TSimpleMsgPack.Create;
      ms.Position := 0;
      pack.DecodeFromStream(ms);
      Writeln(pack.ForcePathObject('sql').AsString);
    end;
    

      

  • 相关阅读:
    Redis3.2集群部署安装
    熟悉SQL Server 数据类型
    泛型的参数简介和参数约束
    流(Stream)与文件流(FileStream)
    C#提取双引号中的字符串
    数组,一维数组,二维数组,交错数组
    结构,枚举
    C#中唯一的三元运算符
    位运算
    异常处理语句
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/11218303.html
Copyright © 2011-2022 走看看