[英]How to find out if the internet connection is not available from your web app
如何确定您的j2ee网络应用程序是否无法使用互联网连接,因为如果没有互联网连接,我们UI的某些部分将无法正常工作。 因此,我希望优雅地失败,而不是失败。
测试“互联网”是否正常工作的唯一通用方法是尝试检索所需的资源。 在某些情况下,任何其他可能会给你带来误导或无益的结果。
例如,如果您使用某个“几乎总是可用”的网站作为互联网工作的代理......当您真正想要与之交谈的网站启用并可访问时,它可能会停止或无法访问。 或相反亦然。 在前一种情况下,您的应用程序可能会断定“互联网”不可用,甚至没有尝试访问您要访问的站点。 在后一种情况下,您的应用程序诊断“互联网”可用对于访问它真正需要与之交谈的网站并不重要。
典型的高级桌面应用程序尚未在19世纪开发并且需要“Internet连接”,其网络状态...菜单显示如下:
Manx Telecom 80.65.254.253
Cambridge, UK 131.111.8.46
US West Coast 169.232.56.224
Yahoo etc.
etc. etc.
查找已知多年来响应ping的IP列表,将其中的10个放入您的软件中。
例如,如果他们中至少有3个人对您的应用程序具有完全互联网连接的确定性有所了解。
通常,这些应用程序会在发现至少三个IP应答ping时停止ping其他IP(IOW:它们仅显示前三个确实应答的延迟/ IP)。
做这种检查的优势而不是蹩脚只是试图获取“你想要的资源”(如果有你想要的独特资源)是你可以直接看到你是否没有互联网连接或只是发出一些问题特定服务器上的特定资源。
稍后,当您想要创建特定资源时,可以显示以下消息:
要么:
这是两个完全不同的东西。
您可以尝试从网络中检索资源或从网络上检索几乎保证100%正常运行时间的其他小项目,即http://www.google.com.au/favicon.ico或类似
这个问题似乎不清楚。 如果互联网连接不可用,UI将如何工作? 除非您从与服务器或Intranet相同的计算机访问UI。
您想检查客户端(浏览器)中的Internet连接是否可用吗?
就像上面说的@Stephen一样,确定这个的唯一方法是获取你想要的远程资源。 在服务器端,您可以检查托管资源的服务器是否可以通过这些API的组合访问InetAddress.getByName和InetAddress.isreachable
如果要确定客户端是否在线,请检查导航器对象上的方法:
nagivator.onLine
因此,我希望优雅地失败,而不是失败。
因此,抓住“坏”异常并将其变成优雅的失败。
在我看来,其他一些答案似乎与我无关。 测试与您永远不会连接的站点的连接是没有意义的。 只需尝试您想要建立的连接并优雅地处理故障。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.