如何使用 Indy TIdTCPServer 跟踪客户端数量

2023-11-29

我想知道当前到 Indy 9 TIdTCPServer 的客户端连接数(在 Delphi 2007 上)

我似乎找不到提供此功能的属性。

我尝试在服务器 OnConnect/OnDisconnect 事件上增加/减少计数器,但当客户端断开连接时,该数字似乎永远不会减少。

有什么建议么?


当前活动的客户端存储在服务器的Threads属性,这是一个TThreadList。只需锁定列表,读取其Count属性,然后解锁列表:

procedure TForm1.Button1Click(Sender: TObject);
var
  NumClients: Integer;
begin
  with IdTCPServer1.Threads.LockList do try
    NumClients := Count;
  finally
    IdTCPServer1.Threads.UnlockList;
  end;
  ShowMessage('There are currently ' + IntToStr(NumClients) + ' client(s) connected');
end;

在《印地 10》中,Threads属性被替换为Contexts财产:

procedure TForm1.Button1Click(Sender: TObject);
var
  NumClients: Integer;
begin
  with IdTCPServer1.Contexts.LockList do try
    NumClients := Count;
  finally
    IdTCPServer1.Contexts.UnlockList;
  end;
  ShowMessage('There are currently ' + IntToStr(NumClients) + ' client(s) connected');
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Indy TIdTCPServer 跟踪客户端数量 的相关文章

  • Delphi XE2 中的 TDataModule.ClassGroup 伪属性到底有什么作用?

    我尝试将一个组件从一个数据模块复制并粘贴到 Delphi XE2 中的另一个数据模块中 该组件是一个 Fast Report 数据源链接组件 数据模块是全新的 刚刚在 XE2 中创建 其他人也遇到了同样的问题并报告了质量中心为106369
  • 开发 Delphi Windows 7 应用程序的规则 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在哪里可以找到开发适用于 Windows 7 的 Delphi 应用程序时应遵循的最佳规则集 Marco 最近发表了 2 篇关于此主题的帖
  • Delphi 窗体在显示时总是会触发 OnResize 吗?

    如果我创建一个新的 Delphi 表单 挂钩其 OnResize 事件并运行该应用程序 则在显示窗口之前会触发 OnResize 我不知道对于任何窗口来说 这种情况是否总是会发生 对于熟悉 Windows API 的人来说 我已将其追溯到
  • 在 Pascal 中将文本文件中的字符串读入数组

    使用这个程序 我试图读取一个文件并将其随机打印到控制台 我想知道是否必须使用数组 例如 我可以将字符串分配到一个数组中 然后从数组中随机打印 但是 我不确定如何解决这个问题 另一个问题是 我当前的程序没有从我的文件中读取第一行 我有一个文本
  • ClientDataset 索引更改时不计算 TAggregateField

    我正在使用连接到 DBGrid 的 TClientDataset 和几个聚合字段 用于计算其他几个浮点字段的总和 所有字段均已在设计时创建 一切都按预期工作 直到 ClientDataset 的 IndexName 使用自定义索引更改 以便
  • 桌面 Delphi 应用程序是否可以通过 Windows 8 认证(使用 Windows 应用程序认证套件)?

    显然 Delphi 任何版本 不支持安全异常处理程序 https forums embarcadero com thread jspa messageID 473469 Visual Studio 中的 SAFESEH 开关 在 Windo
  • Firemonkey - 更新视觉组件

    我们从版本 1 开始就使用 Firemonkey 但仍然发现更新当前在屏幕上可见的组件很困难 在 Firemonkey 中请求重画的 方式 有很多 也许太多了 应用样式 ApplyStyle 事件 主要是当它在屏幕上可见时 请求 repai
  • delphi中生成随机数

    我想在delphi中创建一个随机数并将其分配给文件作为文件名 我设法做到了这一点 但是当我单击按钮生成数字时 它总是以 0 开头 知道如何修复它 procedure TForm1 Button1Click Sender TObject va
  • 如何仅在某些列中设置带有复选框的 TListView?

    我正在使用 Delphi 2010 并且我试图允许用户在 TListView 中的每行 2 个选项之间进行选择 使用 TListView 我可以将样式设置为 vsReport 并启用复选框 但这只会让我每行有 1 个复选框 我需要的是每行
  • 在 Delphi 7 中使用 TScreen

    我的 Delphi 7 应用程序显示 Screen DesktopWidth Screen DesktopHeight Screen Monitors 0 Width Screen Monitors 0 Height 并且 如果选择了第二台
  • 如何正确实现TBitmap的扫描线访问?

    我正在尝试根据以下方式访问位图的扫描线关于内河码头的文章 http edn embarcadero com article 29173 使用像这样的扫描线 for y 0 to n do begin line bitmap scanline
  • 条件表达式在包内是否被破坏?

    考虑以下片段 requires designide rtl vcl IF RTLVersion lt 19 0 E2026 Constant expression expected IF CompilerVersion 22 0 same
  • 如何在 TList 中存储动态数组?

    我需要存储未知数量的组 每个组都有未知数量的元素 项目 这是我的 小组 TGroup array of Integer lt dynamic array as you can see 我想使用 TList 来保存我的组 我的想法是 我可能想
  • 在 Outlook 中创建带有附件的邮件并显示它

    我想在 Outlook 中创建一封带有附件的邮件并在发送之前显示它 但我想我已经尝试了几乎在网上找到的所有示例 但没有任何运气 我可以使用 Indy 但我非常想使用 Outlook 来确保邮件正确 因为它是用于商业用途 函数的任何输入 该函
  • Delphi如何使用其他窗体中的类型?

    抱歉 这是一个非常新手的问题 我正在对这个庞大的应用程序进行维护 它有5种不同的形式 我们将全局变量放在一个单元 uGlobal 中 但我似乎无法从数据单元 uData 访问它 我有这个 Unit uGlobal type TmyType
  • Delphi 2007 中的 HelpInsight 文档

    我正在使用 D2007 并尝试使用 HelpInsight 功能 自 D2005 起提供 来记录我的源代码 我主要对让 HelpInsight 工具提示正常工作感兴趣 通过各种网上冲浪和实验 我发现了以下内容 使用三斜杠 注释样式比其他记录
  • 如何读取注册表项的默认值

    我有一个 Delphi XE2 项目来使用注册表项进行某些操作 所以我定义了以下代码 procedure TMainForm BitBtn01Click Sender TObject var RegistryEntry TRegistry
  • 如何追踪手柄泄漏?

    在我的一个应用程序中 我观察到句柄数量不断增加 在不使用应用程序的情况下 该数字大约每秒增加一次 因此后台处理代码的某些部分一定存在句柄泄漏 我如何追踪此类泄漏 有什么工具可以帮助解决这个问题吗 跟踪句柄泄漏时要寻找哪些模式 导致手柄泄漏的
  • 我需要避免尝试更新连接到 TSQLQuery 的 Delphi TClientDataset 中的非物理字段

    概要 我的代码正在尝试更新 Delphi XE 中的非物理字段TClientDataset 连接到TSQLQuery以其SQL属性集 作为运行时的结果创建Open命令 我有一个TClientDataset连接到一个TDatasetProvi
  • 如何追踪“地址 00000000”的访问违规

    我知道如何创建 map 文件来在错误消息包含实际地址时跟踪访问冲突错误 但是如果错误消息说怎么办 Access violation at address 00000000 Read of address 00000000 我从哪里开始寻找这

随机推荐

  • mysql 错误:超出每小时最大连接数

    我在同一域上为 WordPress 网站运行 php 脚本时遇到错误 Could not connect User abc has exceeded the max connections per hour resource current
  • pgAdmin:如何在输出中查看单元格中的完整值

    我有一个查询 它给我输出单元格中的大输出值 但问题是 为了阅读 我需要拖动列并查看值 在一定范围后 值不会显示 而是显示给我 复制该值后 我也无法获取整组值 Question 如何从输出中看到整组值 选项中有一个设置 Max charact
  • 我什么时候应该使用准备好的语句?

    本来我用的是mysql connect and mysql query做事 然后我学习了SQL注入 所以我正在尝试学习如何使用准备好的语句 我了解 PDO 类的准备和执行函数如何有助于防止 SQL 注入 仅当用户输入存储到数据库中时才需要准
  • 在最新的 Ember.js 构建中的 Ember.View 中定义应用程序模板

    我最近升级到了最新的 Ember js 版本 从 GitHub 页面构建 当使用新路由器时 此功能不再起作用吗 App ApplicationView Ember View extend template Ember Handlebars
  • Celery 和 Django - 没有名为“django”的模块

    我使用描述的说明here Python 2 7 和 Celery 3 1 17 在 celery py 中我有 一开始 from future import absolute import import os from celery imp
  • 使用 Ajax 通过模式上传文件

    我想使用 Ajax 通过模式上传文件 我怎样才能做到这一点 我的模式 div class modal fade in div class modal dialog div class modal content div class moda
  • ConnectionString 属性不打印连接字符串

    我正在尝试使用以下脚本获取数据库数据源的连接字符串 Analysis Server New Object Microsoft AnalysisServices Server Analysis Server connect server da
  • 使用 Xunit 进行.Net 核心测试

    这是我第一次编写测试用例 我并没有陷入困境 也不知道如何进一步进行 我有以下 API 在下面的示例中 我有 2 个端点想要执行测试 public class ValuesController Controller This interfac
  • 在 C# 中创建热点

    是否可以在 C 中创建热点 以便当鼠标位于某个区域时触发事件 您的标准 From 对象公开 OnMouseMove 事件 鉴于您没有任何控制热点的位置 您可以只处理该事件中的坐标 protected override void OnMous
  • Visual Studio 2015 中的向导中缺少 PostgreSQL 数据提供程序

    我花了一天时间尝试将 Entity Framework 6 SQL Server CE 迁移到 PostgreSQL 我已经很好地复制了数据库 但我似乎无法让数据提供程序正常工作 首先 我尝试了旧版 2 2 7 版本的 EF 提供程序 它不
  • com.google.android.maps.MapView ClassNotFoundException

    我正在尝试执行 google 地图活动 但收到 LogCat 错误并且我的应用程序崩溃了 我在注册 API 密钥时使用了 android 提供的编码 所以我不知道为什么它不起作用 我需要帮助解决这个问题 LogCat 08 10 11 04
  • 列表列表的唯一性

    我很好奇什么是唯一化此类数据对象的有效方法 testdata 9034968 ETH 14160113 ETH 9034968 ETH 11111 NOT 9555269 NOT 15724032 ETH 15481740 ETH 1548
  • 如何停止一个线程?

    当线程处于活动状态时 如何停止该线程 我已经给了喜欢 if thread isAlive thread stop 但方法 stop 已被弃用并引发异常 01 21 14 12 40 188 ERROR global 535 Deprecat
  • 是创建新的活动更好还是只是创建不同的布局并替换现有的布局?

    由于我是 Android 新手 我现在正在思考什么是正确的做事方式 目前 我正在编写的应用程序有 4 个不同的屏幕 屏幕 1 节点列表 主屏幕 屏幕 2 选项菜单 带按钮的表格布局 屏幕 3 导航 屏幕 4 有关版本等的文本详细信息 可以使
  • 在 Android 中模糊图像

    我正在使用以下代码来模糊 android 中的图像 但它不起作用 我得到的最终图像颜色非常扭曲 而不是我想要的模糊 我究竟做错了什么 public Bitmap blurBitmap Bitmap bmpOriginal int width
  • 如何从 Eval: in .dir-local.el 设置缓冲区局部变量?

    为什么这有效 nil compilation directory home vava code directory compilation command rake 这不是吗 nil Eval setq compilation direct
  • PHP Google Sheets API - 权限被拒绝

    您好 我刚刚开始学习 PHP 并且正在尝试使用 Google Sheets API 我以为我遵循了他们的指示 我可以很好地调用和编辑工作表数据 但只能公共访问 当我将访问状态更改为私人或组时 我遇到以下消息 PHP Fatal error
  • 使用 AspNet.Security.OpenIdConnect.Server 注销 (ASP.NET vNext)

    我正在使用 Visual Studio 2015 Enterprise 和 ASP NET vNext Beta8 来发行和使用 JWT 令牌 如下所述here 在我们的实现中 我们在令牌发布时将一些客户端详细信息存储在 Redis 中 并
  • 转换为 .NET 4 后,在 VS2010 中将字段附加到记录集时出现奇怪的错误

    我有这个网站的一些代码代码项目链接将数据表转换为记录集 这段代码一直工作正常 直到我更改为 NET 4 以前是 2 现在当我调用以下行时 Dim result As New ADODB Recordset result CursorLoca
  • 如何使用 Indy TIdTCPServer 跟踪客户端数量

    我想知道当前到 Indy 9 TIdTCPServer 的客户端连接数 在 Delphi 2007 上 我似乎找不到提供此功能的属性 我尝试在服务器 OnConnect OnDisconnect 事件上增加 减少计数器 但当客户端断开连接时