cross socket和msgpack的数据序列和还原
2024-08-27 11:14:02
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;
最新文章
- 10月16日上午MySQL数据库基础操作(创建、删除)
- [Git] 怎么使用Git让代码回到以前的某个节点
- Android之Activity与Service通信
- mysql 远程连接 2003 Can't connect to MySQL server (10060)
- Java基础知识强化67:基本类型包装类之Integer直接赋值的面试题
- CDH 2、Cloudera Manager的安装
- Fourinone 作者博客 -集群复制
- JPG、PNG和GIF图片的基本原理及优…
- 通过 kms 激活 office 2016
- 你懂redis吗
- UNION的使用方法 (表与表直接数据和在一起的示例)
- 挖掘两个Integer对象的swap的内幕
- django之auth认证系统
- http协议基础(九)响应首部字段
- 防止常见XSS 过滤 SQL注入 JAVA过滤器filter
- [UOJ218]火车管理
- OpenLayers2中的事件_以Popup为例
- March 2 2017 Week 9 Thursday
- 解决intellij idea中使用live edit插件不能在chrome即时显示css变化的方法(html可以)
- [Spring Framework]学习笔记--Dependency injection(DI)