-4

我正在使用 Delphi XE2 和 indy 10.5.8.0

我在 6 年前遇到了这篇文章中描述的完全相同的问题!

http://www.delphigroups.info/2/1/213924.html

我有一个简单的表单,其中只有一个 idMappedPortTCP 组件集处于活动状态。它按预期工作了几秒钟转发输入/输出,然后突然冻结。组件停止响应,而应用程序中的其他所有内容仍然有效

遗憾的是,同样的项目就像 indy9 的冠军一样工作!但我不能使用 indy9 我必须坚持使用 indy10 :(

我简直不敢相信还没有人为这个众所周知的问题提供解决方案或解决方法。必须有解决方案!

4

1 回答 1

9

那时什么都没做,因为没有什么可做的。正如我在 6 年前的讨论中解释的那样,根本问题是由微软在某些条件下在旧操作系统版本下冻结的 API 函数引起的。那时这不是印地问题,今天也不是印地问题。今天,唯一的select()挂起方法是它正在等待套接字上从未发生的状态更改。由于 Indy 默认使用无限超时,当它实际上是一个网络问题时,这看起来就像在 Indy 中的一个挂起。换句话说,Indy 正在等待永远不会到达的入站数据。您可以使用数据包嗅探器来验证这一点。

于 2012-07-31T23:01:46.340 回答