使用Delphi XE2,检测计算机是否能够执行以下操作的最可靠方法是什么?
答案 0 :(得分:4)
涉及的因素太多(互联网连接类型,防火墙/路由器规则,代理等)。最可靠的方法是简单地不尝试确定当前状态,只是尝试所需的操作(执行实际的HTTP请求,或SMTP / POP3 / IMAP操作等),并准备好对任何错误做出反应。您可以检测与连接相关的错误,并在重试之前提示用户检查其Internet连接。
答案 1 :(得分:1)
使用TIdHTTP.Get
并尝试下载http://google.com
。
当然,这取决于连接到互联网的定义。有时Web流量(端口80)在其他端口打开时被阻止。幸运的是,现在大多数人实际上都被允许浏览网页,因为它还为他们的日常活动提供帮助。谷歌可能是防火墙最少的网站之一,拥有最快的正常运行时间之一。
但是,这仍然是一个幸运的猜测。根据您的需要,您可以尝试一下,看看它是否有效。如果没有,显然计算机没有正确连接,即使它可以到达谷歌。 :)
[编辑]
由于讨论。 InternetCheckConnection
也是一个不错的选择,但它也通过ping实际服务器来检查连接。
MSDN says
使用InternetCheckConnection功能检查连接 互联网。它尝试ping URL指定的服务器 传递给函数。如果是FLAG_ICC_FORCE_CONNECTION标志 设置并且URL为NULL,函数检查是否有 在服务器数据库中输入最近的服务器。如果存在, 函数ping服务器
但由于此函数使用ping,因此它可能比实际检索内容快一点。另一方面,许多防火墙主动拒绝ping。