2

有没有比下面的代码更好的检查工作 Internet 连接的方法,因为它总是返回 true,我不知道为什么。

bool isNetwork=NetworkInterface.GetIsNetworkAvailable();
if(!isNetwork)
{
   MessageBox.Show("Available.");
}
4

2 回答 2

6

GetIsNetworkAvailable根据可用的网络接口返回结果。您应该关闭所有无线电或打开飞行模式以使其返回 false。

您可能还想检查:

NetworkInterface.NetworkInterfaceType == NetworkInterfaceType.None

但实际上,您可能想要做的是检查您是否可以访问特定的 URI。如果您和端点之间存在代理会阻止连接,或者即使您尝试访问的服务器已关闭或遇到错误,仅知道您是否可以连接到“互联网”也无济于事。

如果您想知道是否可以从特定端点检索您想要的数据,唯一确定的方法就是尝试。如果你成功了,那么你可以。如果没有,可能有很多原因。

于 2013-11-05T14:39:30.130 回答
3

也试试这个,

 public static bool CheckNetworkConnection()
    {
        var networkInterface = NetworkInterface.NetworkInterfaceType;

        bool isConnected = false;
        if ((networkInterface == NetworkInterfaceType.Wireless80211)||(networkInterface== NetworkInterfaceType.MobileBroadbandGsm)||(networkInterface==NetworkInterfaceType.MobileBroadbandCdma))
            isConnected = true;

        else if (networkInterface == NetworkInterfaceType.None)
            isConnected = false;
        return isConnected;
    }
于 2014-08-05T09:54:28.770 回答