【问题标题】:How can I check I am actually connected to the internet如何检查我是否实际连接到互联网
【发布时间】:2019-12-04 10:32:53
【问题描述】:

我正在使用 Indy 连接到 Ftp 服务器。我们遇到了服务器关闭的问题,创建了一个“找不到主机”错误,我处理了这个错误并向用户指出,但是,今天该软件安装在没有互联网连接的计算机上。我“连接”时产生的错误也是“找不到主机”,这并不完全正确。是否有我可以在 TIdFtp 组件中调用的函数/程序,它会告诉我是否真的有互联网连接,以便我可以显示一个错误,指示用户未连接?我正在使用 Delphi XE Seattle。

我查看了 IdFtp 属性/函数等列表,但似乎没有什么明显的。

【问题讨论】:

  • 很难定义连接到 Internet 的含义。找不到主机听起来像是对我的准确回应。

标签: ftp indy delphi-xe


【解决方案1】:

我可以在 TIdFtp 组件中调用一个函数/过程,它会告诉我是否真的有互联网连接,这样我就可以显示一个错误,表明用户未连接?

没有。您需要做的是尝试与几个不同的服务器建立 TCP 连接,看看它们中的任何一个成功还是全部失败。例如,您可以使用 TIdTCPClient 连接到众所周知的服务器端口,这些端口几乎可以保证 99% 以上的时间在线,例如端口 80 (HTTP) 或 443 (HTTPS) 上的 google.com/yahoo.com ) 等。

【讨论】:

  • 感谢大家的及时回答!我知道当我发布时会有两个人几乎肯定会提供建议/解决方案,你们都是步行参考图书馆!在周末,我进一步搜索并创建了在 WinInet 中找到的这个函数: var origin : cardinal;开始结果 := InternetGetConnectedState(@origin,0);结尾;我曾想过连接到其他网站,但应该这样做,很可能错误意味着用户没有将他们的笔记本电脑连接到互联网提供商。
  • @TrevorH 有许多不同的方式可以连接到互联网,WinInet 并不真正了解或关心它们,只知道有网络连接。但是拥有网络连接并不能保证互联网连接。众所周知,InternetGetConnectionState() 之类的函数不可靠。实际上,连接到 Internet 上的服务器是最简单、最好的方法。
  • 我可能会根据您的评论扩展我的功能。也许做一个初始测试,然后尝试连接到几个几乎总是在线的站点!如果这两个都失败了,我可以告诉用户检查他们的连接,他们很可能忘记插入东西或连接到手机或 WiFi 网络。
猜你喜欢
  • 2022-12-01
  • 1970-01-01
  • 2015-05-25
  • 1970-01-01
  • 2019-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-02
相关资源
最近更新 更多