我使用Delphi XE2和indy 10.5.8.0
我在6年多前遇到了这篇文章中描述的完全相同的问题!
http://www.delphigroups.info/2/1/213924.html
我有一个简单的表单,只有idMappedPortTCP组件设置为活动状态。 它按预期工作几秒钟转发输入/输出,而不是突然冻结。 组件停止响应,而应用程序中的其他所有内容仍然有效
可惜的是同样的项目就像indy9的冠军一样!但我不能使用indy9我必须坚持使用indy10 :(
我无法相信没有人为这个众所周知的问题提供解决方案或解决方法。必须有一个解决方案!
答案 0 :(得分:9)
当时没有做任何事情,因为没有任何关于它的事情。正如我在6年前的讨论中所解释的那样,根本问题是由微软在某些条件下在旧操作系统版本下的冻结API函数引起的。当时那不是印第安人的问题,今天不是印第安人的问题。今天,select()
再次挂起的唯一方法是,它是否正在等待套接字上的状态更改从未发生过。因为默认情况下Indy使用无限超时,所以当Indy真的是一个网络问题时,它看起来像是一个挂起。换句话说,Indy正在等待从未到过的入站数据。您可以使用数据包嗅探器来验证。