Diocp学习笔记6、通过JSON 字符串传输(DELPHI 通讯框架)

本文介绍了一个使用JSON进行客户端到服务端数据交互的例子。客户端通过构造JSON数据包并将其发送到服务端,服务端接收到数据包后解析JSON内容。示例包括了客户端如何创建JSON数据、将其转换为字符串并发送,以及服务端如何读取并解析这些数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、客户端发送数据

var
  lvJsonStream: TJsonStream;
  SS: AnsiString;
  lvStream:TMemoryStream;
begin
 
    //创建JSON类,并生成数据
    lvJsonStream := TJsonStream.Create;
    lvJsonStream.Json.I['cmdIndex'] := 11;
    lvJsonStream.Json.S['requestID'] := 'login';
    lvJsonStream.Json.S['user.id'] := AUserID;
    lvJsonStream.Json.S['user.paw'] := APaw;
    //生成JSON字符患
    SS := lvJsonStream.getJSonString;
    //转为流
    lvStream := TMemoryStream.Create;
    lvStream.Write(SS[1], Length(SS));
    lvStream.Position := 0;
    //发送
    DiocpContext.WriteObject(lvStream);
end;

2、服务端接收

procedure TMyClientContext.DoContextAction(const pvObject: TObject);
var
  lvCMDObj: TSimpleMsgPack;
   vStream: TMemoryStream;
   SS:string;
begin
  lvJsonStream := TJsonStream.Create;
  //获取传入的流,并转换成字符串
  vStream := TMemoryStream(pvObject);
  SetLength(SS, vStream.Size);
  vStream.Read(SS[1], vStream.Size);
  //将字符串传成JSON
  lvJsonStream.Json:=SO(SS);
  SS:=lvJsonStream.Json.S['requestID'];
  
end;

DELPHI彫和JSON代码* Copyright (c) 2006,2007,2008,2009 Leonid Koninin * leon_kon@users.sourceforge.net * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY Leonid Koninin ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL Leonid Koninin BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值