gpt4 book ai didi

delphi - 求非常简单的TIdCommandHandler条件响应示例

转载 作者:行者123 更新时间:2023-12-02 07:27:23 26 4
gpt4 key购买 nike

Delphi XE2,即 Indy 10。

我的客户端发送一条命令,该命令由我的 TIdCmdTCPServer 的 TIdCommandHandler 处理。

我希望能够执行一些逻辑并返回成功或失败响应,并在客户端检查该响应。

有人可以给我指出几行代码作为示例吗?提前致谢。

最佳答案

嗯,这是最简单的演示。

enter image description here

在表单中添加一个 IdCmdTCPServer,并添加一个命令,在 Command 属性中设置其名称,我最初认为应该在 OnCommand 事件中处理响应,如下所示:

procedure TForm1.IdCmdTCPServer1CommandHandlers0Command(ASender: TIdCommand);
begin
//ASender.Response.Add('Hello'); // wrong way
ASender.Reply.SetReply(0,'HELLO');

end;

更新Remy 指出我不应该使用 Response。

因此,您想要返回成功或失败,传统上使用数字结果后跟字符串值。响应字符串列表中的每个字符串都有一个隐含的行尾传输回客户端:

procedure TForm1.IdCmdTCPServer1CommandHandlers0Command(ASender: TIdCommand);
begin
if DoSomething then
ASender.Reply.SetReply(0,'OK')
else
ASender.Reply.SetReply(999,'ERROR');

end;

IdCommandHandler 和 CmdTCPServer/Client 的想法是遵循“RFC”风格的协议(protocol),这些协议(protocol)是基于 ANSI/ASCII 文本的。 RFC 风格的互联网协议(protocol)的回复通常通过网络编码为包含数字和字符串值的文本。如果您需要获取字符串列表的内容并将其作为响应返回,则可以使用 ASender.Response

对于客户端来说,question here suggests that TIdCmdTcpClient is not the most natural way to build the client for this server 。从他们的名字来看,你可能会认为他们是天生的一对,但事实并非如此。对于您可以构建的大多数简单的 TIdCMDTCPServer,您会发现普通的 TIdTCPClient 是启动客户端的最简单的构建 block 。

关于delphi - 求非常简单的TIdCommandHandler条件响应示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10021073/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com