问题标签 [indy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
841 浏览

delphi - 使用 Indy 实现强大的单向消息

我有一个客户端应用程序应该将通知消息发送到可选的服务器应用程序。客户端不应受到服务器应用程序是否存在的影响。它应该尝试连接到服务器应用程序并发送通知消息,如果出现错误,它应该默默地忽略所有错误并继续工作。

我正在使用 Indy 进行 TCP 通信,但所有避免出现错误消息的尝试(即当服务器应用程序在连接到客户端时关闭时)都失败了。

有没有办法真正让它变得强大?

当前代码如下所示:

0 投票
3 回答
2137 浏览

delphi - 为什么我在 Indy Sockets 9 IdTcpServer ServerExecute 中出现 AccessViolation?

第一个问题:

以下例程是 Indy 9 IdTcpServer.OnExecute 例程的正确实现吗?

第二个(实际上更重要的)问题:

现在偶尔会出现访问冲突(从地址 000000 读取)。显然在这条线上:

但检查 AContext / Connection / InputBuffer / IOHandler = nil BEFORE 是否为假。调用之后(以及引发异常之后),IOHandler 为 nil。

我们正在使用 RAD Studio / Delphi 2007。

0 投票
3 回答
1726 浏览

delphi - TidTCPServer 升级问题

我最近需要将一个旧的 Delphi 6 项目升级到 Delphi 2007。它是一个使用 Indy TidTCPServer 组件的服务器应用程序。我已经遵循了升级到 Indy 10 的所有示例。

该应用程序通过 TCP/IP 与旧的 VB6 应用程序(我们没有代码)接口。我遇到了困难,因为一旦 VB6 应用程序连接,Indy 组件上的 Execute 事件就会触发,但它不会写入任何数据。这会导致应用程序挂起,等待应用程序发送永远不会到达的数据。

原始代码如下所示:

p>

我已经尝试了 Indy 示例中的几个代码示例,以及 StackOverlow 上的示例。一个例子是:

p>

奇怪的是,当我使用 .NET 客户端访问原始代码时,它可以完美运行。这似乎只是来自 VB6 应用程序的问题。

0 投票
2 回答
5919 浏览

web-services - 如何在 Delphi SOAP Web 服务客户端中使用 NTLM 身份验证?

对于 Microsoft CRM 项目,我们需要在 Delphi 2009 Web 服务客户端中进行NTLM 身份验证。

看起来Indy 10 Tiburon 已经有了实验性的 NTLM 支持

如何激活 THTTPRio 组件的 NTLM 身份验证并使用目标 Web 服务服务器的登录信息(用户名、密码、域)?

编辑:如果有一种方法可以使用“基本”以外的其他身份验证方法,例如HTTP Digest access authentication,这也会有所帮助。

0 投票
4 回答
40318 浏览

delphi - Delphi + Indy:连接正常关闭

使用 D7 + Indy 10 最新版本。

我的代码使用 TIdSMTP 发送电子邮件。我一直在某些最终用户处收到“正常关闭连接”,并且从未发送过电子邮件。

代码如下:

有什么建议吗?

0 投票
5 回答
2585 浏览

delphi - 添加了 {APPTYPE CONSOLE} 指令,现在我的应用程序运行非常缓慢。移动鼠标使其运行更快

我正在尝试扩展第 3 方应用程序,以便除了使用 Windows 窗体 GUI(需要混合模式)之外,还可以通过命令行调用它。这是一个相当简单的程序,它基本上加载一个文件,然后单击一个按钮它开始发送 UDP 网络数据包。

我需要从另一个调用应用程序并希望传入一个参数并且需要能够将 ExitCode 返回给调用应用程序。从我读过的内容来看,为了做到这一点,您需要添加编译器指令 {APPTYPE CONSOLE}。

我这样做了,我的应用程序按照我的意愿工作,只是发送网络数据包的速度变慢了。 我发现每当我在表格上移动鼠标时。即网络传输率显着提高。我怀疑存在某种类型的 Windows 消息队列问题,移动鼠标会导致中断,进而导致消息队列被处理?

我四处搜索并尝试在 Timer 中以 1ms 的间隔调用 Application.ProcessMessages 和 PeekMessages,但这根本没有帮助。我在这个用户手册中找到了一些其他应用程序,它说 APPTYPE CONSOLE 和 GUI 类型都支持 Indy 10。坦率地说,这只是让我感到困惑,因为我会假设所有网络库都可以在这两种模式下工作......但就像我说的我不熟悉 Delphi。

我很肯定这个问题被隔离在我的应用程序中的一行中,即是否包含 {APPTYPE CONSOLE}。

有人有想法么?

版本信息:
Delphi 7 Personal (Build 4.453)
Indy 9.0.4

0 投票
4 回答
24597 浏览

delphi - Delphi如何从URL获取图片

我正在寻找任何代码示例来展示如何将图像从 URL 拉到 DelphiTImage组件中。

谢谢,

0 投票
1 回答
2247 浏览

graphics - 将屏幕截图 (Bitblt) 存储在内存缓冲区中以通过 IdTCPClient 发送

在 windows vista 上的 c++ builder 6 中...

我目前有一段代码用于捕获屏幕并将屏幕捕获显示到一个空表单上。我想做的是将捕获的图像存储到内存缓冲区中,然后使用 indy 客户端 IdTCPClient 通过 Internet 发送此缓冲区,以由使用 indy 服务器 IDTCPServer 的类似程序接收。

有没有人对如何实现这一点有任何建议/想法?我对图形编程相当陌生

0 投票
3 回答
510 浏览

delphi - WSAASyncSelect 是否足够好?你能建议一个替代方案吗?印地更好吗?

我从不喜欢 winsock 编程的组件,我喜欢它的自然方式,但今天我的同事告诉我在我的项目中使用 Indy。你能告诉我 Indy 是否是我项目的更好替代品吗?-2 个 TCP 服务器,2 个 TCP 客户端。总共 4 个套接字 -该项目是一个代理。

现在是第二个问题,我每天都读到 WSAASyncSelect 不好,这是可以预测的,它来自 winsock 1.1。我的问题是:建议比 AsyncSelect 更好的方法来手动处理 winsock。

谢谢你。

0 投票
2 回答
7477 浏览

delphi - Delphi Indy IdTcpClient 读取操作返回一个特定请求的截断数据

这是一个有趣的问题,我还没有解决。

我正在编写一个通过 Internet 与服务器通信的客户端。我正在使用 RAD Studio 2007 本机个性在 Indy 10 中使用 TIdTcpClient Internet Direct (Indy) 组件。

为了从服务器获取数据,我使用 SSL 通过端口 443 发出 HTTP 请求,其中我的请求详细信息包含在 HTTP 消息正文中。到现在为止还挺好。代码就像魅力一样工作,但有一个例外。

我提交的一个请求应该会从服务器产生大约 336 KB 的响应(HTTP 响应标头包含 Content-Length:344795)。问题是我只得到了 320KB。XML 格式的响应在 XML 元素的中间被明显截断。

值得一提的是,XML 是简单的文本。没有可以解释截断的特殊字符。我的 TIdTcpClient 组件只是报告说,在收到部分响应后,服务器优雅地关闭了连接(这是每个响应都应该完成的方式,即使是那些没有被截断的响应,所以这不是问题)。

我可以对响应也超过几 K 字节的同一服务器进行几乎相同的调用,并且所有这些都可以正常工作。我提出的一个请求返回大约 850 KB,另一个返回大约 300 KB,依此类推。

简而言之,我只在一个特定的请求中遇到这个问题。所有其他请求(其中有很多)都会收到完整的响应。

我已经与服务的创建者进行了交谈,并提供了我的请求示例。他报告说请求是正确的。他还告诉我,当他向他的服务器发出我的相同请求时,他得到了完整的响应。

我不知所措。要么是服务的创建者弄错了,那端的响应实际上有问题,要么是我的请求有一些特殊之处。

这里有我想念的解决方案吗?请注意,我还使用了许多其他读取机制(ReadString、ReadStrings、ReadBytes 等)并且都产生相同的结果,在 320KB 标记处截断这个特定响应。

该代码可能不相关,但无论如何我都会包含它。抱歉,我不能包含 XML 请求,因为它包含专有信息。(ReadTimeout 设置为 20 秒,但请求在 1 秒左右返回,所以不是超时问题。)