Ftp 如何检查我是否已连接到internet

Ftp 如何检查我是否已连接到internet,ftp,indy,delphi-xe,Ftp,Indy,Delphi Xe,我正在使用Indy连接到Ftp服务器。我们遇到了服务器关闭的问题,产生了一个“主机未找到”错误,我会处理该错误并向用户指出,然而,今天该软件安装在一台没有互联网连接的计算机上。当我“连接”时产生的错误也是“主机未找到”,这不是完全正确的。TIdFtp组件中是否有我可以调用的函数/过程,该函数/过程将告诉我是否确实存在到internet的连接,以便我可以显示指示用户未连接的错误?我正在使用德尔福XE西雅图 我已经浏览了IdFtp属性/函数等的列表,但似乎什么都不明显 TIdFtp组件中是否有我可以

我正在使用Indy连接到Ftp服务器。我们遇到了服务器关闭的问题,产生了一个“主机未找到”错误,我会处理该错误并向用户指出,然而,今天该软件安装在一台没有互联网连接的计算机上。当我“连接”时产生的错误也是“主机未找到”,这不是完全正确的。TIdFtp组件中是否有我可以调用的函数/过程,该函数/过程将告诉我是否确实存在到internet的连接,以便我可以显示指示用户未连接的错误?我正在使用德尔福XE西雅图

我已经浏览了IdFtp属性/函数等的列表,但似乎什么都不明显

TIdFtp组件中是否有我可以调用的函数/过程,该函数/过程将告诉我是否确实存在到internet的连接,以便我可以显示指示用户未连接的错误


不需要。您需要做的是尝试与几个不同的服务器建立TCP连接,看看其中是否有一个成功,或者是否全部失败。例如,您可以使用
TIdTCPClient
连接到众所周知的服务器端口,这些端口几乎可以保证99%以上的时间处于在线状态,例如
google.com
/
yahoo.com
端口80(HTTP)或443(HTTPS)等。很难定义连接到Internet的含义。“找不到主持人”听起来像是对我的准确回答。谢谢你们的回复!当我发帖时,我知道会有两个人几乎肯定会提供建议/解决方案,你们都是一个步行参考图书馆!周末,我进一步搜索并创建了WinInet中的这个函数:var origin:cardinal;开始结果:=InternetGetConnectedState(@origin,0);结束;我曾想过连接到其他网站,但这应该可以,很可能错误意味着用户没有将其笔记本电脑连接到internet提供商。@TrevorH连接到internet的方式有很多种,WinInet并不真正了解或关心它们,只是存在网络连接。但拥有网络连接并不能保证互联网连接。像
InternetGetConnectionState()
这样的函数是出了名的不可靠。实际上,连接到Internet上的服务器是最简单和最好的方法。我可能会根据您的评论扩展我的功能。也许做一个初始测试,然后尝试连接到几个几乎总是启动的站点!如果这两个都失败了,我可以告诉用户检查他们的连接,他们很可能忘记了插上什么东西或连接到手机或WiFi网络。