如何在控制台应用程序中使用 TIdUDPServer?

2023-12-31

Indy UDP 服务器组件似乎依赖于 Windows 消息,因为我看到只有当鼠标光标移到包含服务器组件的表单上时才会出现新消息。

我使用以下代码在运行时创建了该组件:

private
    { Private declarations }
    Srv: TIdUDPServer;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
  Srv := TIdUDPServer.Create(Self);
  Srv.DefaultPort := 9009;
  Srv.OnUDPRead := Self.udpServerUDPRead;
  Srv.Active := True;
end;

我更喜欢控制台或服务应用程序。我是否需要一个(不可见的)窗口句柄+一些窗口消息队列代码来使该组件正常工作?

更新:一些(非官方)文档 http://www.fredshack.com/docs/indy.html says:

TIdUDPServer 当活动时创建一个监听线程来监听 入站 UDP 数据包。 ...当 ThreadedEvent 为 false 时,OnUDPRead 事件将在主程序线程的上下文中触发。什么时候 ThreadedEvent 为 true,则在以下上下文中触发 OnUDPRead 事件 侦听器线程。


如果您使用线程,则不需要 Windows 消息或表单。只需将 ThreadedEvent 设置为 true 并在线程中处理,请记住该事件是在不同的线程上传入的,因此您必须处理线程“同步”。我通过仅使用处理来自其自己的内部队列(我的消息和我的队列,而不是 Windows 消息或队列)的消息的线程来实现此目的,因此事件处理程序将带有接收到的数据的消息放入线程的队列中,以便在“目标”线程的上下文,而不是 Indy 侦听器线程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在控制台应用程序中使用 TIdUDPServer? 的相关文章

  • 如果鼠标不在 VirtualTreeView (TVirtualStringTree) 上,如何禁用 MouseWheel

    如果 TVirtualStringTree 获得焦点 则默认情况下它会在鼠标滚轮上滚动 即使鼠标未超出控制范围 除非它位于另一个 TVirtualStringTree 上方 有没有一种快速而优雅的方法来禁用这种行为 我已经这样做了OnMou
  • 有什么办法可以将2个数组添加到一个数组中吗?

    有没有一种简单通用的方法可以将两个数组添加到一个数组中 在下面的情况下 不可能简单地使用C A B陈述 我想避免每次都为它制定算法 TPerson record Birthday Tdate Name Surname string end
  • 在 Inno Setup 中使用 StringToColor

    我想为表单上的标签 TNewStaticText 属性颜色 TColor 读写 分配一些颜色 我将颜色存储为 RRGGBB 字符串 我想使用 Delphi 函数 StringToColor 将其转换为 TColor 但如果我在脚本中使用此函
  • 如何更改 Delphi 2010 IDE 中编辑器选项卡的字体大小?

    有谁知道如何更改 Delphi 2010 IDE 中编辑器选项卡的字体大小 我的 1080p 22 显示器的字体太小 无法阅读 而且会导致眼睛疼痛 一些笔记 它不尊重系统的 DPI 设置 因此更改系统设置没有帮助 而且 我现在已经使用 14
  • 写入 UDP 套接字会被阻塞吗?

    如果是的话 在什么条件下 或者 换句话说 在twisted 中运行此代码是否安全 class StatsdClient AbstractStatsdClient def init self host port super StatsdCli
  • ADODB 组件导致 Win7/Server 2008 上的访问冲突

    我有一段用 Delphi 2005 编写的代码 用于在 LDAP 中搜索用户的特定属性 当在 Windows 7 或 Server 2008 上运行时 我遇到访问冲突 但在 XP 或 2003 上则没有 Function IsSSOUser
  • 使用多个 NIC 广播 UDP 数据包

    我正在 Linux 中为相机控制器构建嵌入式系统 非实时 我在让网络做我想做的事情时遇到问题 该系统有 3 个 NIC 1 个 100base T 和 2 个千兆端口 我将较慢的连接到相机 这就是它支持的全部 而较快的连接是与其他机器的点对
  • 如何从具有管理员权限的应用程序接收键盘输入到非管理员应用程序?

    我编写了一个应用程序 该应用程序具有覆盖类型的窗口 可以通过热键显示和隐藏该窗口 而另一个应用程序具有焦点 所述另一个应用程序是一个以管理员权限运行的 DirectX 游戏 我已经尝试了 3 种可能的解决方案 以便在其他应用程序中按下我的热
  • 我可以在“Delphi 2007 for Win32”中使用.NET DLL吗?

    是否可以在 Delphi 2007 for Win32 中使用 NET DLL 我尝试以与 ActiveX 组件相同的方式导入 DLL 但它似乎不起作用 组件菜单 gt 导入组件 gt 导入 NET 程序集 是否可能 如果可以 步骤是什么
  • 如何确保 FormClose 程序运行,无论程序如何退出?

    在 Delphi 7 中 我有一个 TMainForm FormClose 过程 旨在在程序退出时写出一些状态 这在手动关闭程序时效果很好 但是 我发现如果程序被 Windows 强制 退出 例如在 Windows 更新后需要重新启动 则不
  • 如何在 Delphi REST 中发布内容类型为“multipart/form-data”的数据?

    我正在尝试使用 REST API 发送请求multipart form data作为内容类型 我总是收到 HTTP 1 1 500 Internal Error 作为响应 我尝试向需要的方法发送请求application x www for
  • 使用Delphi检查HTML代码中是否有对象属性值

    如何使用Delphi检查HTML代码中是否有输入对象属性值 there isn t value attribute
  • SO_BINDTODEVICE Linux 套接字选项的问题

    我有一台带有两个网卡的电脑 一 eth0 用于 LAN 互联网 另一个用于与一个微控制器设备进行 UDP 通信 微控制器有一个 IP 192 168 7 2 和一个 MAC 地址 第二个电脑网络适配器 eth1 有 192 168 7 1
  • 用于实时传输协议的开源 .net C# 库

    net中有好的RTP开源库吗 我的目的是用于音频和视频同步问题并提高每秒帧数速率 我对 RTP 不太了解 但你可能想看看本文 http www codeproject com KB IP Using RTP in Multicasting
  • 带位图的简单组合框

    如何将位图放入组合框中并将样式设置为简单 例如 Google Chrome 的右侧有星号 Firefox 的右侧有箭头 我尝试了这段代码 procedure TForm2 ComboBox1DrawItem Control TWinCont
  • 通过 UDP 从服务器向 iPhone 发送大量实时处理的数据

    我正在实施一个远程应用程序 服务器将实时处理和渲染数据作为动画 准确地说 是一系列图像 每次渲染图像时 都会通过 UDP 将图像传输到接收 iPhone 客户端 我研究了一些UDP 我知道以下几点 UDP 的最大大小约为 65k 不过 iP
  • 德尔福数据结构

    我可能需要在 Delphi 中做一个项目 并且是该领域的初学者 目前 我正在网上搜索资源 但由于资源站点太少而感到困惑 首先 你能给我一些好的网站 其中包含我迄今为止错过的 Delphi 资源吗 我也在 Delphi 中搜索数据结构 想知道
  • 以编程方式重新启动 Delphi 应用程序

    应该不可能运行我的应用程序的多个实例 因此项目源码包含 CreateMutex nil False PChar ID if GetLastError ERROR ALREADY EXISTS then Halt 现在我想以编程方式重新启动我
  • 使用 Twisted Python 的 UDP 客户端和服务器

    我想创建一个服务器和客户端 使用 Twisted 从网络发送和接收 UDP 数据包 我已经用 Python 中的套接字编写了此代码 但想利用 Twisted 的回调和线程功能 然而 我需要 Twisted 设计方面的帮助 我想接收多种类型的
  • 为什么未初始化的指针会导致内存访问冲突接近 0?

    据说often 但并非总是如此 当你在接近于零的内存位置 比如 89 美元 获得 AV 时 你就有了一个未初始化的指针 但我也在 Delphi 书籍中看到了这一点 嗯 或者它们都是由同一作者写的 Update 引自 Bob Swart 等人

随机推荐

  • JavaScript - 我如何了解“闭包”的用法?

    维基百科 自由的百科全书 闭包 计算机科学 在计算机科学中 闭包是 在中评估的函数 环境包含一个或多个 绑定变量 当被调用时 函数可以访问这些变量 闭包的显式使用是 与函数式编程相关 以及诸如 ML 和 口齿不清 诸如以下对象的构造 其他语
  • 在 Electron 中处理表单的正确方法是什么?

    表单 html 和提交事件是 渲染器 的一部分 提交的数据应该在主流程中可用 提交表单并使数据可在 main js 中访问的正确方法是什么 我应该简单地使用 远程 模块将数据传递到 main js 中的函数还是有更好的方法 我们使用服务 A
  • MySql中如何使用触发器制作外键

    我想使用触发器在MySql中创建外键 我有以下表格 1 内容 表 教师 ID varchar 20 子 ID varchar 20 路径 varchar 100 文件名 varchar 100 2 老师 表 教师 ID varchar 20
  • 如何向我的班级用户表明验证要求?

    我正在实现一个类 该类使用非常严格定义的模式封装 xml 文档 我不控制架构 类中的属性之一用于模式指示必须与特定正则表达式匹配的元素值 在属性的设置器中 如果字符串与表达式不匹配 我将引发异常 我的问题是 如何才能更好地向我班级的用户传达
  • 如何将 Visual Studio 2019 中的 .NET 版本更改为 .NET Framework 4.7.2?

    我怎样才能将 NET更改为 NET Framework 4 7 2 我已经两天了 真的很挣扎 我正在做一个 WinFormApp 只能使用 NET 5 或 NET Core 3 1 但我需要 NET Framework 4 7 2 作为另一
  • 反应式闪亮模块共享数据

    我正在尝试使用模块创建一个闪亮的应用程序 两个数据帧 表 a 和 b 是反应性的并且可以修改 第三个数据帧 表 c 也是反应性的并且基于表 a 和 b 我尝试按照这个question https stackoverflow com ques
  • PayPal IPN 意外变化

    从 2017 年 3 月 8 日左右开始 我们注意到一些 不是全部 PayPal IPN 出现了一些异常行为 PayPal 似乎正在推出某种变化 还有一些其他人报告了其他事情 例如 PayPal 从 IPN 端点中删除的 QueryStri
  • std::unordered_set 元素的迭代顺序是否保证始终相同?

    如果迭代的元素std unordered set多次而不更改集合的内容 但可能从中读取 计算其大小等 是否保证每次都会以相同的顺序访问元素 在你提到的具体情况下 是的 因为该标准明确规定了何时进行重新散列 并因此重新排序 它仅在插入期间发生
  • C# Random 不像 random 那样工作

    我有一个图 每个节点有 4 个子节点 我编写了一个算法来生成从开始节点到结束节点的随机路径 在每个节点 它选择一个随机的下一个节点 访问过的节点可以重新访问 代码如下 public List
  • Cuda 中未找到 HANDLE_ERROR 错误

    global void add int a int b int c c a b int main void int c int dev c HANDLE ERROR cudaMalloc void dev c sizeof int add
  • Sunspot / Solr / Rails:模型关联未在索引中更新

    我的应用程序中有一个 Fieldnote 模型 它通过名为 fieldnote activities 的表附加了 many activities 然后我这样定义一个可搜索索引 searchable auto index gt true au
  • 如何让 ASP.NET Web API(自托管)在 *仅* 本地主机上侦听?

    我正在按照这个例子here http www dotnetcurry com ShowArticle aspx ID 896用于自托管 ASP NET Web API 服务 但是 当在基地址中指定 localhost 作为主机时 它会被转换
  • 系列的第 n 项

    我们必须找到这个级数的第n项http oeis org A028859 http oeis org A028859 n 答案应该以 1000000007 为模 我已经编写了代码 但是当 n a 是一个巨大的数字时 时间限制就超出了 incl
  • 其他同步方法

    除了使用synchronized关键字之外 如何在java中同步方法 你可以使用java util concurrent locks封装 特别是Lock接口 Lock l l lock try access the resource pro
  • 在图像控制中以 5 秒时间间隔显示文件夹中的所有图像

    我有一个包含 1000 张图像的文件夹 图像名称的顺序为 ICON000 ICON001 直到 ICON 999 我需要它们以 5 秒的时间延迟按顺序显示在我的 WPF 图像控件中 我使用文件对话框来获取特定文件夹的路径和图像的相应前缀 图
  • JavaScript ES6 类可以与异步代码库一起使用吗?

    什么可以ES6 类 https developer mozilla org en US docs Web JavaScript Reference Classes作为一种组织模式 提供异步代码 下面是一个 ES7 async await 的
  • Bootstrap 导航栏边距

    我想让导航栏内容的左右边距变小 以便 品牌 最左侧的组件 在左侧显示得比默认值更多 右侧组件的情况也是如此 有人可以指出我要修改的相关较少变量吗 Thanks 对于基本布局 您想要的 CSS 选择器是 body gt navbar bran
  • PHP 在 foreach 中通过引用传递[重复]

    这个问题在这里已经有答案了 我有这个代码 a array zero one two three foreach a as v foreach a as v echo v PHP EOL 有人可以解释一下为什么输出是 零一二二 来自 zend
  • Android WebView 中的自定义视频播放器

    我研究了 Android 中的一些浏览器 当用户单击 Web 视图中的 html5 视频标记项时 他们可以使用自定义播放器播放视频 这个怎么做 更具体地说 当用户单击视频标签时 如何获取视频网址以及如何触发我的自定义播放器而不是 Andro
  • 如何在控制台应用程序中使用 TIdUDPServer?

    Indy UDP 服务器组件似乎依赖于 Windows 消息 因为我看到只有当鼠标光标移到包含服务器组件的表单上时才会出现新消息 我使用以下代码在运行时创建了该组件 private Private declarations Srv TIdU