Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有使用.NET检查internet连接的新方法?_C#_.net_Internet Connection - Fatal编程技术网

C# 有没有使用.NET检查internet连接的新方法?

C# 有没有使用.NET检查internet连接的新方法?,c#,.net,internet-connection,C#,.net,Internet Connection,我已经阅读了这里发布的一些问题,我发现这篇文章是关于这个问题最可靠的: 但是,如果接口所连接的网络被谷歌屏蔽了呢?(例如,中国的互联网)如果你正在检查互联网连接,你可能有一个原因。。。也就是说,您希望使用某些特定的web资源。因此,请对照该资源进行检查 更妙的是,根本不检查。互联网服务随时都可能上升或下降。。。包括您运行支票和尝试使用服务之间的时间。这意味着你做的任何事情都必须能够处理失败。所以不要开支票;将工作放入异常处理程序中 我知道使用异常处理进行流控制听起来可能很慢,或者很奇怪。但是不在

我已经阅读了这里发布的一些问题,我发现这篇文章是关于这个问题最可靠的:


但是,如果接口所连接的网络被谷歌屏蔽了呢?(例如,中国的互联网)

如果你正在检查互联网连接,你可能有一个原因。。。也就是说,您希望使用某些特定的web资源。因此,请对照该资源进行检查

更妙的是,根本不检查。互联网服务随时都可能上升或下降。。。包括您运行支票和尝试使用服务之间的时间。这意味着你做的任何事情都必须能够处理失败。所以不要开支票;将工作放入异常处理程序中

我知道使用异常处理进行流控制听起来可能很慢,或者很奇怪。但是不在流控制中使用异常的主要原因是它几乎是计算机科学中最慢的事情。你知道更糟糕的是什么吗?等待网络数据包在半个地球上传输或超时,就是这样


在极少数情况下,当您只想向用户显示一般的internet状态时,您可以这样做,并使用
www.msftncsi.com

如果您正在检查internet连接,您可能有一个原因。。。也就是说,您希望使用某些特定的web资源。因此,请对照该资源进行检查

更妙的是,根本不检查。互联网服务随时都可能上升或下降。。。包括您运行支票和尝试使用服务之间的时间。这意味着你做的任何事情都必须能够处理失败。所以不要开支票;将工作放入异常处理程序中

我知道使用异常处理进行流控制听起来可能很慢,或者很奇怪。但是不在流控制中使用异常的主要原因是它几乎是计算机科学中最慢的事情。你知道更糟糕的是什么吗?等待网络数据包在半个地球上传输或超时,就是这样


在极少数情况下,当您只想向用户显示internet的一般状态时,您可以使用
www.msftncsi.com

,如果您想在
.Net
中检查internet的状态,而不依赖
WebClient
类或
Google
,这是最好的方法

首先,导入DLL wininet
[System.Runtime.InteropServices.DllImport(“wininet.dll”)]

然后,调用
静态外部bool InternetGetConnectedState(…)

如果互联网连接,则返回
true
;如果无法连接,则返回
false
,无论
Google

[System.Runtime.InteropServices.DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int Description, int ReservedValue);

public static bool IsConnected()
{
     return InternetGetConnectedState(out int description, 0);         
}
其中:

if(IsConnected())
{
   //Internet is connected
}
else
{
   //Internet is not connected
}

如果您想在
.Net
中检查internet的状态,而不依赖
WebClient
类或
Google
,这是最好的方法

首先,导入DLL wininet
[System.Runtime.InteropServices.DllImport(“wininet.dll”)]

然后,调用
静态外部bool InternetGetConnectedState(…)

如果互联网连接,则返回
true
;如果无法连接,则返回
false
,无论
Google

[System.Runtime.InteropServices.DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int Description, int ReservedValue);

public static bool IsConnected()
{
     return InternetGetConnectedState(out int description, 0);         
}
其中:

if(IsConnected())
{
   //Internet is connected
}
else
{
   //Internet is not connected
}

我认为在这种情况下,在自由世界中你需要一台服务器,你可以控制它,并确保它始终可用。如果谷歌不能保证可用的话,我想你需要一个在自由世界中的服务器,你可以控制它并确保它一直可用。如果谷歌无法保证其可用,那么请点击
WebClient