You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NetCom7 Chat Demo中OnHandleCommand事件代码实现及参数咨询

NetCom7 TncServerSource.OnHandleCommand 实现说明

事件参数明细

NetCom7的TncServerSource.OnHandleCommand事件参数是固定的,你可以通过Delphi自动生成事件框架直接获取,各参数含义如下:

  • Sender: TObject:触发事件的TncServerSource实例(也就是你的Server组件)
  • aContext: TncContext:当前客户端的连接上下文,可获取客户端IP、会话ID、自定义会话数据等信息
  • aCmd: Integer:客户端发送的命令标识,对应你要处理的业务指令
  • aData: TBytes:客户端随命令传来的附加数据(字节数组格式)
  • var Result: TBytes:需要你赋值的返回结果,最终会回传给发起命令的客户端

完整代码实现示例

在ufrmMain.pas中添加事件处理函数,示例如下:

procedure TfrmMain.ServerHandleCommand(Sender: TObject; aContext: TncContext;
  aCmd: Integer; aData: TBytes; var Result: TBytes);
var
  Response: string;
  ClientIP: string;
begin
  // 获取客户端IP,用于日志或业务逻辑
  ClientIP := aContext.Connection.PeerIP;

  // 根据命令码分支处理业务
  case aCmd of
    // 示例:处理"登录验证"命令(假设命令码为10)
    10:
      begin
        // 将客户端传来的字节数组转为UTF8字符串
        var LoginInfo := TEncoding.UTF8.GetString(aData);
        // 这里编写登录验证逻辑,比如解析账号密码
        if LoginInfo = 'admin:123456' then
          Response := '登录成功'
        else
          Response := '账号或密码错误';
        // 将响应转为字节数组赋值给Result
        Result := TEncoding.UTF8.GetBytes(Response);
      end;

    // 示例:处理"广播消息"命令(假设命令码为20)
    20:
      begin
        // 把消息广播给所有在线客户端
        (Sender as TncServerSource).Broadcast(20, aData);
        // 返回广播成功的响应
        Result := TEncoding.UTF8.GetBytes('消息已广播');
      end;

    // 处理未知命令
    else
      Response := Format('未知命令:%d,来自IP:%s', [aCmd, ClientIP]);
      Result := TEncoding.UTF8.GetBytes(Response);
  end;
end;

绑定事件的两种方式

  1. 设计器绑定:在Delphi设计器中选中Server组件,打开Object Inspector的Events标签,找到OnHandleCommand,下拉选择你编写的ServerHandleCommand方法即可。
  2. 代码手动绑定:在窗体的OnCreate事件中添加绑定代码:
procedure TfrmMain.FormCreate(Sender: TObject);
begin
  Server.OnHandleCommand := ServerHandleCommand;
end;

注意事项

  • 字符串与TBytes转换时要统一编码,推荐用UTF8避免乱码
  • 如果不需要返回数据,直接给Result赋值空数组:Result := [];
  • aContext是区分不同客户端的关键,可通过aContext.Data存储客户端自定义会话状态

内容的提问来源于stack exchange,提问作者Gregor Marston

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 02:13:34