【问题标题】:.Net WebException to check if local machine has internet access.Net WebException 检查本地机器是否可以访问互联网
【发布时间】:2012-02-19 12:47:32
【问题描述】:

我正在开发一个 Winforms 应用程序并使用 C# 作为开发语言。在一个地方,我需要向 URL 发送请求并接收反馈。

我在 try catch 块中使用我的代码并捕获了 WebException。我注意到 WebException 的发生有两个原因。

(1)当我输入的网址错误时(一个不存在的网址)

(2) 没有网络连接时

如果我在 URL 正确的情况下捕获 WebException,可以检查本地计算机是否没有 Internet 连接。 (我需要检查互联网连接是否存在才能继续下一步)

谁能确认我的建议是正确的,或者如果错误,为什么?提前谢谢

【问题讨论】:

标签: c# .net winforms exception-handling


【解决方案1】:

您无法通过尝试连接到 URL 来检查 Internet 连接。您无法区分连接不良或服务器不可用。

wininet 中有一个 win32 API - 见check whether Internet connection is available with C#

【讨论】:

  • 谢谢 bryanmac.. 我去看看。
  • 注意我删除了关于 dns 的建议——它不可靠,因为分辨率缓存在机器上,所以它不可靠
【解决方案2】:

我使用此功能(在 vb .net 中)来了解互联网是否可用:

Public Function HasInternet() As Boolean
    Dim response As Boolean = False
    Try
        response = My.Computer.Network.Ping("www.google.com")
        If Not response Then
            'Try another one
            response = My.Computer.Network.Ping("www.yahoo.com")
        End If
    Catch ex As Exception
        'Catch the error or leave it blank for returning False
    End Try
    Return response
End Function

唯一的问题是如果 google.com 和 yahoo.com 停止响应 ping 的请求,它将报告没有互联网连接。

【讨论】:

  • 请注意,许多站点/路由器等...会阻止 ICMP。例如,在我为其添加此评论的当前机器上,我有互联网连接,但我无法 ping 谷歌或雅虎。
  • 这对我有帮助。谢谢
猜你喜欢
  • 2013-03-24
  • 2021-01-16
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
  • 2016-09-10
  • 1970-01-01
  • 2017-03-04
相关资源
最近更新 更多