2

使用 Delphi XE2,检测计算机是否能够执行以下操作的最可靠方法是什么?

  • 使用没有固定 IP 地址的 HTTP 访问特定网站
  • 使用任何本地或远程电子邮件客户端发送和接收电子邮件
4

2 回答 2

4

涉及的因素太多(Internet 连接类型、防火墙/路由器规则、代理等)。最可靠的方法是根本不尝试确定当前状态,而只是尝试所需的操作(执行实际的 HTTP 请求,或 SMTP/POP3/IMAP 操作等),并准备好对任何错误做出反应。您可以检测与连接相关的错误并提示用户在重试之前检查其 Internet 连接。

于 2013-07-16T20:25:58.910 回答
1

使用TIdHTTP.Get并尝试下载http://google.com

当然,这取决于连接到互联网的定义。有时 Web 流量(端口 80)被阻止,而其他端口处于打开状态。幸运的是,现在大多数人实际上都可以浏览网页,因为它也为他们的日常活动提供帮助。谷歌可能是防火墙最少、正常运行时间最长的网站之一。

但是,这仍然是一个幸运的猜测。根据你的需要,你不妨试试你的东西,看看它是否有效。如果没有,显然计算机没有正确连接,即使它可以连接到谷歌。:)

[编辑]

因为讨论。InternetCheckConnection也是一个不错的选择,但它还通过 ping 实际服务器来检查连接。 MSDN 说

使用InternetCheckConnection函数检查与 Internet 的连接。它尝试 ping 由传递给函数的 URL 指定的服务器。如果设置了 FLAG_ICC_FORCE_CONNECTION 标志并且 URL 为 NULL,则该函数将检查服务器数据库中是否有最近服务器的条目。如果存在,该函数会 ping 该服务器

但由于此函数使用 ping,它可能比实际检索内容要快一些。另一方面,许多防火墙主动拒绝 ping。

于 2013-07-16T18:17:43.167 回答