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;
    

      

  • 相关阅读:
    CentOS7学习小记
    PHP的time函数返回时间不正确
    MySQL信息提示不是英文问题
    windows下ITOP安装
    Zend安装
    投资日记2015.6
    解决SecureCRT连接linux超时后断开[转]
    红黑树及生成超过32768随机数
    在宏定义中怎么使用可变参数
    C++堆上申请二维数组
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/11218303.html
Copyright © 2011-2022 走看看