尽管有互联网连接,这个代码片段是否会返回false ?

本文关键字:是否 片段 返回 false 代码 互联网 连接 | 更新日期: 2023-09-27 18:17:29

这个代码片段会在网络连接可用的情况下返回false吗?

   private bool ConnectionIsOk()
    {
        try
        {
            using (var client = new WebClient())
            using (var stream = client.OpenRead("http://www.google.com"))
            {
                return true;
            }
        }
        catch
        {
            return false;
        }
    }

这部分代码我在我的程序中使用,当我的朋友启动我的程序时,他说这个函数返回false,尽管有互联网连接!!这是真的吗?

尽管有互联网连接,这个代码片段是否会返回false ?

失败的原因有很多。其实我也是。

我通过代理连接到互联网,所以通过Visual Studio调试需要我输入代理认证细节。因此,从代理运行此代码可能返回false。

另一个选项可能是google不可用,打开时没有返回任何响应。

您的DNS也可能无法解析您提供的到google的链接,这也使该方法返回false。您可以输入ip地址来绕过这种可能性。

在优化代码的情况下,我将首先保留异常细节并返回它们。它们可能对你的方法的使用者有用;这些额外的信息实际上可以帮助他们弄清楚为什么他们的互联网连接不能正常运行。

您也可以尝试本主题中提供的ping -方法:使用。net检查互联网连接的最佳方法是什么?

当然可以。如果由于任何原因无法访问Google,它将返回false。如果您的DNS关闭(但不是您的互联网连接),它将返回false。引用单个主机名是不理想的。

如果网络连接可用,但是:

  1. "www.google.com"无法解析(通过DNS)
  2. 与服务器的连接不成功(无论什么原因)

函数将返回false

所以你问题的答案是"yes"